bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug ld/14851] broken relocations for weak symbols on mingw32


From: ssbssa at yahoo dot de
Subject: [Bug ld/14851] broken relocations for weak symbols on mingw32
Date: Sun, 29 Dec 2019 17:49:20 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=14851

Hannes Domani <ssbssa at yahoo dot de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ssbssa at yahoo dot de

--- Comment #2 from Hannes Domani <ssbssa at yahoo dot de> ---
(In reply to Paolo Bonzini from comment #1)
> Correct test case:
> 
> g1.c:
> int f() { printf("strong"); return 82; }
> int g() { printf("strong"); return 83; }
> 
> g2.c:
> #include <stdio.h>
> static int weak_f() { return 42; }
> static int weak_g() { return 43; }
> typeof(weak_f) f __attribute__((__weak__, __alias__("weak_f")));
> typeof(weak_g) g __attribute__((__weak__, __alias__("weak_g")));
> int main() { printf("%d/%d\n", f(), g()); }
> 
> g3.c:
> static int default_f() { return 42; }
> static int default_g() { return 43; }
> static typeof(default_f) weak_f __attribute__((__weakref__("f")));
> static typeof(default_g) weak_g __attribute__((__weakref__("g")));
> int main() { printf("%d/%d\n", (weak_f?:default_f)(),
> (weak_g?:default_g)()); }

With these files I get the following results (with ld 2.33.1 & gcc 9.2.0):

gcc g2.c: 42/43
gcc g1.c g2.c: strongstrong82/83
gcc g3.c: 42/43
gcc g1.c g3.c: strongstrong82/83

So I think this was fixed.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]