1 /*
   2  * This file and its contents are supplied under the terms of the
   3  * Common Development and Distribution License ("CDDL"), version 1.0.
   4  * You may only use this file in accordance with the terms of version
   5  * 1.0 of the CDDL.
   6  *
   7  * A full copy of the text of the CDDL should have accompanied this
   8  * source.  A copy of the CDDL is also available via the Internet at
   9  * http://www.illumos.org/license/CDDL.u
  10  */
  11 
  12 /*
  13  * Copyright 2019, Richard Lowe.
  14  */
  15 
  16         .section .rodata.str1.1,"aMS",@progbits,1
  17 .LC0:
  18         .string "foo: %s (%p)\n"
  19         .section .tdata,"awT",@progbits
  20         .align 4
  21         .type foo, @object
  22         .size foo,4
  23 .local foo
  24 foo:
  25         .string "foo"
  26         .text
  27 .globl main
  28         .type main, @function
  29 main:
  30         pushl %ebp
  31         movl %esp, %ebp
  32         /*
  33          * an R_386_TLS_LDM relocation without a following
  34          * followed by an R_386_PLT32 relocation, rather than an
  35          * R_386_TLS_LDM_PLT the call should be removed, and _not_
  36          * left alone unrelocated as it was prior to:
  37          * 10267 ld and GCC disagree about i386 local dynamic TLS
  38          */
  39         leal foo@TLSLDM(%ebx), %eax
  40         call ___tls_get_addr@PLT
  41         leal  foo@DTPOFF(%eax), %edx
  42         pushl %edx
  43         pushl %edx
  44         pushl $.LC0
  45         call printf@PLT
  46         movl $0x0,%eax
  47         leave
  48         ret
  49         .size main, .-main