Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #81965
| From | Paavo Helde <myfirstname@osa.pri.ee> |
|---|---|
| Newsgroups | comp.lang.c++ |
| Subject | Re: Global const objects missing from object file |
| Date | 2021-10-10 17:28 +0300 |
| Organization | A noiseless patient Spider |
| Message-ID | <sjutb4$dud$1@dont-email.me> (permalink) |
| References | <sjqap1$sih$1@gioia.aioe.org> <sjrhdp$bta$1@dont-email.me> <sju2pd$1ko$1@gioia.aioe.org> <isfms2F80esU1@mid.individual.net> <sjurco$1nlj$1@gioia.aioe.org> |
10.10.2021 16:55 Steve Keller kirjutas:
> Bo Persson <bo@bo-persson.se> writes:
>
>> It only causes duplication if you take the address and return a
>> pointer. Why do that for a constant defined in a header?
>
> But taking the address is very common, e.g. if the object is an array.
> In fact, before I posted my first example with 'const int a = 42;' I
> had observed the behavior with const char arrays. Here You see the
> duplication if you put it as non-extern const into a header file:
>
> $ cat foo.hh
> const char s[] = "This is a string";
>
> void bar();
> $ cat x.cc
> #include <iostream>
>
> #include "foo.hh"
>
> void bar() { std::cout << s; }
> $ cat y.cc
> #include <iostream>
>
> #include "foo.hh"
>
> int main()
> {
> bar();
> std::cout << s;
> }
> $ g++ -Os -o foo x.cc y.cc
> $ strings -a foo | grep This
> This is a string
> This is a string
For having only one string the duplicates need to be removed at link
time, so one needs -flto here. Also you should avoid to explicitly
define two different arrays as indeed these would need to be different
objects.
With the following changes I get one string only in the final executable:
$ cat foo.hh
const char* const s = "This is a string";
void bar();
$ g++ -Os -o foo x.cc y.cc -flto
$ strings foo | grep 'This is'
This is a string
Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Global const objects missing from object file Steve Keller <keller.steve@gmx.de> - 2021-10-08 22:47 +0200
Re: Global const objects missing from object file red floyd <no.spam.here@its.invalid> - 2021-10-08 15:09 -0700
Re: Global const objects missing from object file Steve Keller <keller.steve@gmx.de> - 2021-10-10 08:28 +0200
Re: Global const objects missing from object file Paavo Helde <myfirstname@osa.pri.ee> - 2021-10-10 12:03 +0300
Re: Global const objects missing from object file David Brown <david.brown@hesbynett.no> - 2021-10-10 12:29 +0200
Re: Global const objects missing from object file Paavo Helde <myfirstname@osa.pri.ee> - 2021-10-09 10:47 +0300
Re: Global const objects missing from object file scott@slp53.sl.home (Scott Lurndal) - 2021-10-09 14:32 +0000
Re: Global const objects missing from object file Paavo Helde <myfirstname@osa.pri.ee> - 2021-10-09 21:39 +0300
Re: Global const objects missing from object file Steve Keller <keller.steve@gmx.de> - 2021-10-10 08:55 +0200
Re: Global const objects missing from object file Bo Persson <bo@bo-persson.se> - 2021-10-10 10:34 +0200
Re: Global const objects missing from object file Steve Keller <keller.steve@gmx.de> - 2021-10-10 15:55 +0200
Re: Global const objects missing from object file Paavo Helde <myfirstname@osa.pri.ee> - 2021-10-10 17:28 +0300
Re: Global const objects missing from object file Steve Keller <keller.steve@gmx.de> - 2021-10-10 20:42 +0200
Re: Global const objects missing from object file Paavo Helde <myfirstname@osa.pri.ee> - 2021-10-10 22:44 +0300
Re: Global const objects missing from object file Paavo Helde <myfirstname@osa.pri.ee> - 2021-10-10 12:14 +0300
Re: Global const objects missing from object file Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-10-29 06:29 -0700
Re: Global const objects missing from object file Bo Persson <bo@bo-persson.se> - 2021-10-29 15:55 +0200
Re: Global const objects missing from object file Öö Tiib <ootiib@hot.ee> - 2021-10-29 22:20 -0700
Re: Global const objects missing from object file Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-11-07 04:51 -0800
Re: Global const objects missing from object file scott@slp53.sl.home (Scott Lurndal) - 2021-10-29 14:44 +0000
Re: Global const objects missing from object file Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-11-07 05:08 -0800
Re: Global const objects missing from object file scott@slp53.sl.home (Scott Lurndal) - 2021-11-07 14:21 +0000
Re: Global const objects missing from object file David Brown <david.brown@hesbynett.no> - 2021-10-10 12:33 +0200
Re: Global const objects missing from object file "Alf P. Steinbach" <alf.p.steinbach@gmail.com> - 2021-10-09 15:05 +0200
Re: Global const objects missing from object file Juha Nieminen <nospam@thanks.invalid> - 2021-10-09 17:40 +0000
csiph-web