]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ArmPkg/CompilerIntrinsicsLib ARM: make memset() weak again
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Mon, 5 Sep 2016 12:33:37 +0000 (13:33 +0100)
committerArd Biesheuvel <ard.biesheuvel@linaro.org>
Mon, 5 Sep 2016 14:38:53 +0000 (15:38 +0100)
After the recent update of CompilerIntrinsicsLib, our memset() is no
longer emitted as a weak symbol. On ARM, this may cause problems when
combining this library with another library that supplies memset() [e.g.,
CryptoPkg/IntrinsicLib], due to the fact that the object also supplies
the __aeabi_memXXX entry points, which can only be satisfied by this
object. So make our memset() weak again, to let the other implementation
take precedence.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
ArmPkg/Library/CompilerIntrinsicsLib/memset.c

index 3d417d797242d9a168a71ca565f8d6ce1e02cd90..0d837fcecf0916de11462891c2bb440a852017cf 100644 (file)
@@ -31,6 +31,15 @@ void *memset(void *dest, int c, size_t n);
 
 #ifdef __arm__
 
+//
+// Other modules (such as CryptoPkg/IntrinsicLib) may provide another
+// implementation of memset(), which may conflict with this one if this
+// object was pulled into the link due to the definitions below. So make
+// our memset() 'weak' to let the other implementation take precedence.
+//
+__attribute__((__weak__))
+void *memset(void *dest, int c, size_t n);
+
 void __aeabi_memset(void *dest, size_t n, int c)
 {
   __memset(dest, c, n);