https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98634

            Bug ID: 98634
           Summary: gcc 4.8.5 - 9.3.0 on target x86_64, when compile a exe
                    and linking with a so, and exe's source file extern a
                    var, the final exe has the var with the same name with
                    the one in the so file
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: zuogang at huawei dot com
  Target Milestone: ---

during linking some externed var are added into the final exe file

step to reproduce :

zoge@123:/mnt/f/test$ gcc -c -fPIC share.c -o share.o
zoge@123:/mnt/f/test$ gcc share.o -shared -o libshare.so
zoge@123:/mnt/f/test$ gcc ./test-share.c ./libshare.so
zoge@123:/mnt/f/test$ readelf -s -W ./a.out | grep aaa
     6: 0000000000004028     4 OBJECT  GLOBAL DEFAULT   24 aaa
    62: 0000000000004028     4 OBJECT  GLOBAL DEFAULT   24 aaa
zoge@123:/mnt/f/test$

zoge@123:/mnt/f/test$ cat share.c
#include <stdio.h>
int aaa=123;
void hello()
{
            printf("Hello world!\n");
}
zoge@123:/mnt/f/test$ cat test-share.c
extern int aaa;

int main()
{
        return aaa;
}

zoge@123:/mnt/f/test$

Reply via email to