git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: definition for _attribute() in remote.c

From
Philip Oakley <philipoakley@iee.org>
Date
Apr 25, 2016, 21:34 UTC
Message-ID
<F23050BD4C62408D97A64B1D885007A8@PhilipOakley>
In-Reply-To
<20160425211030.GA10309@sigill.intra.peff.net>
From: "Jeff King" <peff@peff.net>
Show 32 quoted lines
> On Mon, Apr 25, 2016 at 10:02:38PM +0100, Philip Oakley wrote:
>
>> I'm looking at getting Git for Windows to compile via Visual Studio
>> (https://github.com/git-for-windows/git/pull/256).
>>
>> However the use of __attribute() in remote.c at L1662
>> (https://github.com/git-for-windows/git/blob/master/remote.c#L1662) has 
>> got
>> me confused in that I can't see how the regular definition of 
>> __attribute()
>> is #included in this case. A definition is given in
>> git\compat\regex\regex_internal.h but doesn't appear to be on remote.c's
>> include path.
>>
>> The line was introduced by 3a429d0 (remote.c: report specific errors from
>> branch_get_upstream, 2015-05-21) which appears to be later than the 
>> previous
>> MSVC testers had looked at.
>
> It should be handled in git-compat-util.h, which is included by cache.h,
> which is included by remote.c.
>
> There we have:
>
>  #ifndef __GNUC__
>  #ifndef __attribute__
>  #define __attribute__(x)
>  #endif
>  #endif
>
> which should make it a noop on compilers which don't know about it. Is
> VS (or another file) setting __GNUC__?

It's not the __attribute__ definition (a Gnu C ism), rather its the __attribute variant, which has a definition in regex_internal.h, and is used in the regex code. It's that one that's used in remote.c that I can't fathom (i.e. how it worked in normally)

regex_internal.h#L160-164 #ifdef __GNUC__ # define __attribute(arg) __attribute__ (arg) #else # define __attribute(arg) #endif

thus when the compilation get to remote.c#L1662 it fails to find that definition.

Should that line use the gnu extension name?

-- Philip

Previous: Philip OakleyNext: Jeff King
Message 7 of 8 in “definition for _attribute() in remote.c”
  1. Philip OakleyApr 25, 2016
  2. Jeff KingApr 25, 2016
  3. remote.c: spell __attribute__ correctlyJeff King, Apr 25, 2016
  4. Philip OakleyApr 25, 2016
  5. Ramsay JonesApr 25, 2016
  6. Philip OakleyApr 26, 2016
  7. Philip OakleyApr 25, 2016
  8. Jeff KingApr 25, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.