Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 3 Dec 1995 16:19:00 -0700 (MST)
From:      Terry Lambert <terry@lambert.org>
To:        imb@scgt.oz.au (michael butler)
Cc:        terry@lambert.org, current@freebsd.org
Subject:   Re: changes in -current..TEST please
Message-ID:  <199512032319.QAA10540@phaeton.artisoft.com>
In-Reply-To: <199512032130.IAA12009@asstdc.scgt.oz.au> from "michael butler" at Dec 4, 95 08:30:47 am

next in thread | previous in thread | raw e-mail | index | archive | help
> > How is dummy_cleanup "not referenced"?
>  
> > phaeton: {50} grep dummy_cleanup *.c
> > kern_xxx.c:dummy_cleanup() {}
> > kern_xxx.c:TEXT_SET(cleanup_set, dummy_cleanup);
>  
> > Looks referenced to me.
> 
> Yes but look at the reference .. from kernel.h ..
> 
> #define MAKE_SET(set, sym, type) \
> 	static void *const __set_##set##_sym_##sym = \
> 		(&__set_##set##_sym_##sym, &sym, 0); \
> 	asm(".stabs \"_" #set "\", " #type ", 0, 0, _" #sym)
> #define TEXT_SET(set, sym) MAKE_SET(set, sym, 23)
> #define DATA_SET(set, sym) MAKE_SET(set, sym, 25)
> #define BSS_SET(set, sym)  MAKE_SET(set, sym, 27)
> #define ABS_SET(set, sym)  MAKE_SET(set, sym, 21)
> 
>  [ .. etc .. ]
> 
>  .. it's declared "static" which in all my references, means "local to this
> file" and then referenced externally (by the linker) and not by any code
> that GCC can see. The resultant compiler behaviour is undefined as far as
> I'm aware so I don't believe the claim that GCC is broken in this example
> (in other ways, yes, but not this).
> 
> Removing "static" tells the compiler to leave it alone as it _might_ be
> referenced beyond its limited vision,

Sounds like it's out-clevering itself.

Consider the problems this introduces with constructors in an "ld -R"
situation.


					Terry Lambert
					terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199512032319.QAA10540>