From 233c504cd940d9802226b6a3a092368b86978f5e Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Wed, 4 May 2011 10:01:24 +0200 Subject: */crt?.S: remove .size directives sed -i -e '/\.size[[:space:]]/d' $(grep -l "\.size" libc/sysdeps/linux/*/crt*.[sSc]) Signed-off-by: Bernhard Reutner-Fischer --- libc/sysdeps/linux/arm/crti.S | 1 - libc/sysdeps/linux/arm/crtn.S | 2 -- libc/sysdeps/linux/avr32/crt1.S | 1 - libc/sysdeps/linux/avr32/crtn.S | 2 -- libc/sysdeps/linux/cris/crt1.S | 2 -- libc/sysdeps/linux/cris/crtn.S | 2 -- libc/sysdeps/linux/frv/crt0.S | 1 - libc/sysdeps/linux/frv/crtn.S | 2 -- libc/sysdeps/linux/h8300/crtn.S | 2 -- libc/sysdeps/linux/i386/crt1.S | 1 - libc/sysdeps/linux/i386/crtn.S | 2 -- libc/sysdeps/linux/microblaze/crtn.S | 2 -- libc/sysdeps/linux/mips/crt1.S | 1 - libc/sysdeps/linux/powerpc/crt1.S | 1 - libc/sysdeps/linux/powerpc/crtn.S | 2 -- libc/sysdeps/linux/sh/crt1.S | 1 - libc/sysdeps/linux/sh/crtn.S | 2 -- libc/sysdeps/linux/sh64/crtn.S | 2 -- libc/sysdeps/linux/sparc/crt1.S | 1 - libc/sysdeps/linux/sparc/crtn.S | 2 -- libc/sysdeps/linux/v850/crtn.S | 2 -- libc/sysdeps/linux/vax/crtn.S | 2 -- libc/sysdeps/linux/x86_64/crt1.S | 1 - libc/sysdeps/linux/x86_64/crtn.S | 2 -- 24 files changed, 39 deletions(-) (limited to 'libc') diff --git a/libc/sysdeps/linux/arm/crti.S b/libc/sysdeps/linux/arm/crti.S index e335b7140..a2d0c03f2 100644 --- a/libc/sysdeps/linux/arm/crti.S +++ b/libc/sysdeps/linux/arm/crti.S @@ -63,7 +63,6 @@ _fini: _call_via_\register: bx \register nop - .size _call_via_\register, . - _call_via_\register .endm @ and calls for the 15 general purpose registers (2 bytes each). diff --git a/libc/sysdeps/linux/arm/crtn.S b/libc/sysdeps/linux/arm/crtn.S index de01b38dc..a4752c186 100644 --- a/libc/sysdeps/linux/arm/crtn.S +++ b/libc/sysdeps/linux/arm/crtn.S @@ -15,7 +15,6 @@ .arm ldmdb fp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, pc} #endif - .size _init, .-_init .section .fini .global _fini @@ -29,7 +28,6 @@ .arm ldmdb fp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, pc} #endif - .size _fini, .-_fini @ In fact this is modified to 3.4.4 .ident "GCC: (GNU) 3.3.2 20031005 (Debian prerelease)" diff --git a/libc/sysdeps/linux/avr32/crt1.S b/libc/sysdeps/linux/avr32/crt1.S index ca1fa7a4c..e2a82a528 100644 --- a/libc/sysdeps/linux/avr32/crt1.S +++ b/libc/sysdeps/linux/avr32/crt1.S @@ -80,7 +80,6 @@ __main_addr: ___uClibc_main_addr: .long __uClibc_main #endif - .size _start, . - _start /* * The LSB says we need this. diff --git a/libc/sysdeps/linux/avr32/crtn.S b/libc/sysdeps/linux/avr32/crtn.S index f7d104070..c37f7d201 100644 --- a/libc/sysdeps/linux/avr32/crtn.S +++ b/libc/sysdeps/linux/avr32/crtn.S @@ -4,11 +4,9 @@ .global _init .type _init, @function ldm sp++, r6, pc - .size _init, . - _init .section .fini .align 2 .global _fini .type _fini, @function ldm sp++, r6, pc - .size _fini, . - _fini diff --git a/libc/sysdeps/linux/cris/crt1.S b/libc/sysdeps/linux/cris/crt1.S index b07e36b51..1525a2b76 100644 --- a/libc/sysdeps/linux/cris/crt1.S +++ b/libc/sysdeps/linux/cris/crt1.S @@ -9,7 +9,6 @@ .global __data_start .align 2 .type __data_start, @object - .size __data_start, 4 __data_start: .dword 0 @@ -53,4 +52,3 @@ _start: /* Leave control to the libc */ jsr __uClibc_main nop - .size _start, .-_start diff --git a/libc/sysdeps/linux/cris/crtn.S b/libc/sysdeps/linux/cris/crtn.S index 951ae5449..7b2dce17c 100644 --- a/libc/sysdeps/linux/cris/crtn.S +++ b/libc/sysdeps/linux/cris/crtn.S @@ -9,7 +9,6 @@ move.d [$sp+],$r1 Ret nop - .size _init, .-_init .section .fini .align 1 @@ -20,4 +19,3 @@ move.d [$sp+],$r1 Ret nop - .size _fini, .-_fini diff --git a/libc/sysdeps/linux/frv/crt0.S b/libc/sysdeps/linux/frv/crt0.S index a1d07bb69..a40b67e80 100644 --- a/libc/sysdeps/linux/frv/crt0.S +++ b/libc/sysdeps/linux/frv/crt0.S @@ -113,7 +113,6 @@ _start: /* Crash if somehow `exit' returns anyways. */ jmpl @(gr0,gr0) -.size _start,.-_start /* Define a symbol for the first piece of initialized data. */ .data diff --git a/libc/sysdeps/linux/frv/crtn.S b/libc/sysdeps/linux/frv/crtn.S index 1d58c0207..bd11901ad 100644 --- a/libc/sysdeps/linux/frv/crtn.S +++ b/libc/sysdeps/linux/frv/crtn.S @@ -32,7 +32,6 @@ Cambridge, MA 02139, USA. */ ld @(sp,gr0), fp addi sp,#16,sp jmpl @(gr5,gr0) - .size _init, .-_init .section .fini,"x" .globl _fini @@ -41,4 +40,3 @@ Cambridge, MA 02139, USA. */ ld @(sp,gr0), fp addi sp,#16,sp jmpl @(gr5,gr0) - .size _fini, .-_fini diff --git a/libc/sysdeps/linux/h8300/crtn.S b/libc/sysdeps/linux/h8300/crtn.S index 89e321868..8f9fa1fac 100644 --- a/libc/sysdeps/linux/h8300/crtn.S +++ b/libc/sysdeps/linux/h8300/crtn.S @@ -14,7 +14,6 @@ ; #NO_APP mov.l @er7+,er6 rts - .size __init, .-__init ; #APP .section .fini @@ -24,7 +23,6 @@ ; #NO_APP mov.l @er7+,er6 rts - .size __fini, .-__fini ; #APP .end diff --git a/libc/sysdeps/linux/i386/crt1.S b/libc/sysdeps/linux/i386/crt1.S index a133cb9e0..7dfeaf1a5 100644 --- a/libc/sysdeps/linux/i386/crt1.S +++ b/libc/sysdeps/linux/i386/crt1.S @@ -129,7 +129,6 @@ _start: #endif hlt /* Crash if somehow `exit' does return. */ -.size _start,.-_start /* Define a symbol for the first piece of initialized data. */ .data diff --git a/libc/sysdeps/linux/i386/crtn.S b/libc/sysdeps/linux/i386/crtn.S index 191250487..34d5b38e2 100644 --- a/libc/sysdeps/linux/i386/crtn.S +++ b/libc/sysdeps/linux/i386/crtn.S @@ -6,7 +6,6 @@ popl %ebx popl %ebp ret -.size _init,.-_init @@ -16,7 +15,6 @@ popl %ebx popl %ebp ret -.size _fini,.-_fini diff --git a/libc/sysdeps/linux/microblaze/crtn.S b/libc/sysdeps/linux/microblaze/crtn.S index da8c920ef..6f4ef60d3 100644 --- a/libc/sysdeps/linux/microblaze/crtn.S +++ b/libc/sysdeps/linux/microblaze/crtn.S @@ -26,7 +26,6 @@ .end _init $Lfe2: - .size _init,$Lfe2-_init .section .fini .align 2 @@ -40,6 +39,5 @@ $Lfe2: .end _fini $Lfe3: - .size _fini,$Lfe3-_fini /*@TRAILER_BEGINS*/ diff --git a/libc/sysdeps/linux/mips/crt1.S b/libc/sysdeps/linux/mips/crt1.S index 6a804125e..90f69e9c8 100644 --- a/libc/sysdeps/linux/mips/crt1.S +++ b/libc/sysdeps/linux/mips/crt1.S @@ -118,7 +118,6 @@ __start: hlt: /* Crash if somehow `__uClibc_main' returns anyway. */ b hlt -.size __start,.-__start .end __start /* Define a symbol for the first piece of initialized data. */ diff --git a/libc/sysdeps/linux/powerpc/crt1.S b/libc/sysdeps/linux/powerpc/crt1.S index 4f1494a8f..de3aa0814 100644 --- a/libc/sysdeps/linux/powerpc/crt1.S +++ b/libc/sysdeps/linux/powerpc/crt1.S @@ -95,7 +95,6 @@ _start: b __uClibc_main #endif -.size _start,.-_start /* Define a symbol for the first piece of initialized data. */ .data diff --git a/libc/sysdeps/linux/powerpc/crtn.S b/libc/sysdeps/linux/powerpc/crtn.S index ba6d0e0c8..938367caa 100644 --- a/libc/sysdeps/linux/powerpc/crtn.S +++ b/libc/sysdeps/linux/powerpc/crtn.S @@ -9,7 +9,6 @@ addi 1,1,32 mtlr 0 blr - .size _init, .-_init .section .fini .align 2 @@ -20,4 +19,3 @@ addi 1,1,32 mtlr 0 blr - .size _fini, .-_fini diff --git a/libc/sysdeps/linux/sh/crt1.S b/libc/sysdeps/linux/sh/crt1.S index 9707f8316..277c55e69 100644 --- a/libc/sysdeps/linux/sh/crt1.S +++ b/libc/sysdeps/linux/sh/crt1.S @@ -104,7 +104,6 @@ _start: nop #endif - .size _start,.-_start .align 2 #ifdef __PIC__ diff --git a/libc/sysdeps/linux/sh/crtn.S b/libc/sysdeps/linux/sh/crtn.S index 437f8ebc3..e8be7e51f 100644 --- a/libc/sysdeps/linux/sh/crtn.S +++ b/libc/sysdeps/linux/sh/crtn.S @@ -15,7 +15,6 @@ .align 2 .L6: .L7: - .size _init, .-_init .section .fini .hidden _fini @@ -31,6 +30,5 @@ .align 2 .L11: .L12: - .size _fini, .-_fini .ident "GCC: (GNU) 3.3.2" diff --git a/libc/sysdeps/linux/sh64/crtn.S b/libc/sysdeps/linux/sh64/crtn.S index eb6479a56..501fe9167 100644 --- a/libc/sysdeps/linux/sh64/crtn.S +++ b/libc/sysdeps/linux/sh64/crtn.S @@ -14,7 +14,6 @@ ptabs r18, tr0 addi.l r15, 16, r15 blink tr0, r63 - .size _init, .-_init .section .fini .hidden _fini @@ -28,6 +27,5 @@ ptabs r18, tr0 addi.l r15, 16, r15 blink tr0, r63 - .size _fini, .-_fini .ident "GCC: (GNU) 3.3.2" diff --git a/libc/sysdeps/linux/sparc/crt1.S b/libc/sysdeps/linux/sparc/crt1.S index f33a714ef..78aaaccce 100644 --- a/libc/sysdeps/linux/sparc/crt1.S +++ b/libc/sysdeps/linux/sparc/crt1.S @@ -123,7 +123,6 @@ _start: illtrap 0 #endif -.size _start,.-_start /* Define a symbol for the first piece of initialized data. */ .data diff --git a/libc/sysdeps/linux/sparc/crtn.S b/libc/sysdeps/linux/sparc/crtn.S index 24b4bf43c..d64ffd020 100644 --- a/libc/sysdeps/linux/sparc/crtn.S +++ b/libc/sysdeps/linux/sparc/crtn.S @@ -7,7 +7,6 @@ .proc 020 ret restore - .size _init, .-_init .section .fini .align 4 @@ -16,4 +15,3 @@ .proc 020 ret restore - .size _fini, .-_fini diff --git a/libc/sysdeps/linux/v850/crtn.S b/libc/sysdeps/linux/v850/crtn.S index aecb55737..6bb0b39ac 100644 --- a/libc/sysdeps/linux/v850/crtn.S +++ b/libc/sysdeps/linux/v850/crtn.S @@ -8,7 +8,6 @@ .type __init, @function #NO_APP jr __return_r31 - .size __init, .-__init #APP .section .fini @@ -18,7 +17,6 @@ .type __fini, @function #NO_APP jr __return_r31 - .size __fini, .-__fini #APP .ident "GCC: (GNU) 3.3.2" diff --git a/libc/sysdeps/linux/vax/crtn.S b/libc/sysdeps/linux/vax/crtn.S index 6ca5c4fcd..1153fd50b 100644 --- a/libc/sysdeps/linux/vax/crtn.S +++ b/libc/sysdeps/linux/vax/crtn.S @@ -9,7 +9,6 @@ __gnu_compiled_c: .type _init,@function ret .Lfe2: - .size _init,.Lfe2-_init .section .fini .align 1 @@ -17,5 +16,4 @@ __gnu_compiled_c: .type _fini,@function ret .Lfe3: - .size _fini,.Lfe3-_fini .ident "GCC: (GNU) 2.95.2 19991024 (release) (Linux/VAX CVS)" diff --git a/libc/sysdeps/linux/x86_64/crt1.S b/libc/sysdeps/linux/x86_64/crt1.S index f6c1eb1e7..a21be7583 100644 --- a/libc/sysdeps/linux/x86_64/crt1.S +++ b/libc/sysdeps/linux/x86_64/crt1.S @@ -129,7 +129,6 @@ _start: #endif hlt /* Crash if somehow `exit' does return. */ -.size _start,.-_start /* Define a symbol for the first piece of initialized data. */ .data diff --git a/libc/sysdeps/linux/x86_64/crtn.S b/libc/sysdeps/linux/x86_64/crtn.S index 5b110d967..9804e0f76 100644 --- a/libc/sysdeps/linux/x86_64/crtn.S +++ b/libc/sysdeps/linux/x86_64/crtn.S @@ -7,7 +7,6 @@ .type _init, %function addq $8, %rsp ret -.size _init,.-_init .section .fini @@ -15,4 +14,3 @@ .type _fini, %function addq $8, %rsp ret -.size _fini, .-_fini -- cgit v1.2.3 From 07464c3e7156f4c8dfcac673c74f19b700b1b3b5 Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Thu, 5 May 2011 09:19:16 +0200 Subject: Revert "*/crt?.S: remove .size directives" Removing them generally was not a good idea This reverts commit 233c504cd940d9802226b6a3a092368b86978f5e. --- libc/sysdeps/linux/arm/crti.S | 1 + libc/sysdeps/linux/arm/crtn.S | 2 ++ libc/sysdeps/linux/avr32/crt1.S | 1 + libc/sysdeps/linux/avr32/crtn.S | 2 ++ libc/sysdeps/linux/cris/crt1.S | 2 ++ libc/sysdeps/linux/cris/crtn.S | 2 ++ libc/sysdeps/linux/frv/crt0.S | 1 + libc/sysdeps/linux/frv/crtn.S | 2 ++ libc/sysdeps/linux/h8300/crtn.S | 2 ++ libc/sysdeps/linux/i386/crt1.S | 1 + libc/sysdeps/linux/i386/crtn.S | 2 ++ libc/sysdeps/linux/microblaze/crtn.S | 2 ++ libc/sysdeps/linux/mips/crt1.S | 1 + libc/sysdeps/linux/powerpc/crt1.S | 1 + libc/sysdeps/linux/powerpc/crtn.S | 2 ++ libc/sysdeps/linux/sh/crt1.S | 1 + libc/sysdeps/linux/sh/crtn.S | 2 ++ libc/sysdeps/linux/sh64/crtn.S | 2 ++ libc/sysdeps/linux/sparc/crt1.S | 1 + libc/sysdeps/linux/sparc/crtn.S | 2 ++ libc/sysdeps/linux/v850/crtn.S | 2 ++ libc/sysdeps/linux/vax/crtn.S | 2 ++ libc/sysdeps/linux/x86_64/crt1.S | 1 + libc/sysdeps/linux/x86_64/crtn.S | 2 ++ 24 files changed, 39 insertions(+) (limited to 'libc') diff --git a/libc/sysdeps/linux/arm/crti.S b/libc/sysdeps/linux/arm/crti.S index a2d0c03f2..e335b7140 100644 --- a/libc/sysdeps/linux/arm/crti.S +++ b/libc/sysdeps/linux/arm/crti.S @@ -63,6 +63,7 @@ _fini: _call_via_\register: bx \register nop + .size _call_via_\register, . - _call_via_\register .endm @ and calls for the 15 general purpose registers (2 bytes each). diff --git a/libc/sysdeps/linux/arm/crtn.S b/libc/sysdeps/linux/arm/crtn.S index a4752c186..de01b38dc 100644 --- a/libc/sysdeps/linux/arm/crtn.S +++ b/libc/sysdeps/linux/arm/crtn.S @@ -15,6 +15,7 @@ .arm ldmdb fp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, pc} #endif + .size _init, .-_init .section .fini .global _fini @@ -28,6 +29,7 @@ .arm ldmdb fp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, pc} #endif + .size _fini, .-_fini @ In fact this is modified to 3.4.4 .ident "GCC: (GNU) 3.3.2 20031005 (Debian prerelease)" diff --git a/libc/sysdeps/linux/avr32/crt1.S b/libc/sysdeps/linux/avr32/crt1.S index e2a82a528..ca1fa7a4c 100644 --- a/libc/sysdeps/linux/avr32/crt1.S +++ b/libc/sysdeps/linux/avr32/crt1.S @@ -80,6 +80,7 @@ __main_addr: ___uClibc_main_addr: .long __uClibc_main #endif + .size _start, . - _start /* * The LSB says we need this. diff --git a/libc/sysdeps/linux/avr32/crtn.S b/libc/sysdeps/linux/avr32/crtn.S index c37f7d201..f7d104070 100644 --- a/libc/sysdeps/linux/avr32/crtn.S +++ b/libc/sysdeps/linux/avr32/crtn.S @@ -4,9 +4,11 @@ .global _init .type _init, @function ldm sp++, r6, pc + .size _init, . - _init .section .fini .align 2 .global _fini .type _fini, @function ldm sp++, r6, pc + .size _fini, . - _fini diff --git a/libc/sysdeps/linux/cris/crt1.S b/libc/sysdeps/linux/cris/crt1.S index 1525a2b76..b07e36b51 100644 --- a/libc/sysdeps/linux/cris/crt1.S +++ b/libc/sysdeps/linux/cris/crt1.S @@ -9,6 +9,7 @@ .global __data_start .align 2 .type __data_start, @object + .size __data_start, 4 __data_start: .dword 0 @@ -52,3 +53,4 @@ _start: /* Leave control to the libc */ jsr __uClibc_main nop + .size _start, .-_start diff --git a/libc/sysdeps/linux/cris/crtn.S b/libc/sysdeps/linux/cris/crtn.S index 7b2dce17c..951ae5449 100644 --- a/libc/sysdeps/linux/cris/crtn.S +++ b/libc/sysdeps/linux/cris/crtn.S @@ -9,6 +9,7 @@ move.d [$sp+],$r1 Ret nop + .size _init, .-_init .section .fini .align 1 @@ -19,3 +20,4 @@ move.d [$sp+],$r1 Ret nop + .size _fini, .-_fini diff --git a/libc/sysdeps/linux/frv/crt0.S b/libc/sysdeps/linux/frv/crt0.S index a40b67e80..a1d07bb69 100644 --- a/libc/sysdeps/linux/frv/crt0.S +++ b/libc/sysdeps/linux/frv/crt0.S @@ -113,6 +113,7 @@ _start: /* Crash if somehow `exit' returns anyways. */ jmpl @(gr0,gr0) +.size _start,.-_start /* Define a symbol for the first piece of initialized data. */ .data diff --git a/libc/sysdeps/linux/frv/crtn.S b/libc/sysdeps/linux/frv/crtn.S index bd11901ad..1d58c0207 100644 --- a/libc/sysdeps/linux/frv/crtn.S +++ b/libc/sysdeps/linux/frv/crtn.S @@ -32,6 +32,7 @@ Cambridge, MA 02139, USA. */ ld @(sp,gr0), fp addi sp,#16,sp jmpl @(gr5,gr0) + .size _init, .-_init .section .fini,"x" .globl _fini @@ -40,3 +41,4 @@ Cambridge, MA 02139, USA. */ ld @(sp,gr0), fp addi sp,#16,sp jmpl @(gr5,gr0) + .size _fini, .-_fini diff --git a/libc/sysdeps/linux/h8300/crtn.S b/libc/sysdeps/linux/h8300/crtn.S index 8f9fa1fac..89e321868 100644 --- a/libc/sysdeps/linux/h8300/crtn.S +++ b/libc/sysdeps/linux/h8300/crtn.S @@ -14,6 +14,7 @@ ; #NO_APP mov.l @er7+,er6 rts + .size __init, .-__init ; #APP .section .fini @@ -23,6 +24,7 @@ ; #NO_APP mov.l @er7+,er6 rts + .size __fini, .-__fini ; #APP .end diff --git a/libc/sysdeps/linux/i386/crt1.S b/libc/sysdeps/linux/i386/crt1.S index 7dfeaf1a5..a133cb9e0 100644 --- a/libc/sysdeps/linux/i386/crt1.S +++ b/libc/sysdeps/linux/i386/crt1.S @@ -129,6 +129,7 @@ _start: #endif hlt /* Crash if somehow `exit' does return. */ +.size _start,.-_start /* Define a symbol for the first piece of initialized data. */ .data diff --git a/libc/sysdeps/linux/i386/crtn.S b/libc/sysdeps/linux/i386/crtn.S index 34d5b38e2..191250487 100644 --- a/libc/sysdeps/linux/i386/crtn.S +++ b/libc/sysdeps/linux/i386/crtn.S @@ -6,6 +6,7 @@ popl %ebx popl %ebp ret +.size _init,.-_init @@ -15,6 +16,7 @@ popl %ebx popl %ebp ret +.size _fini,.-_fini diff --git a/libc/sysdeps/linux/microblaze/crtn.S b/libc/sysdeps/linux/microblaze/crtn.S index 6f4ef60d3..da8c920ef 100644 --- a/libc/sysdeps/linux/microblaze/crtn.S +++ b/libc/sysdeps/linux/microblaze/crtn.S @@ -26,6 +26,7 @@ .end _init $Lfe2: + .size _init,$Lfe2-_init .section .fini .align 2 @@ -39,5 +40,6 @@ $Lfe2: .end _fini $Lfe3: + .size _fini,$Lfe3-_fini /*@TRAILER_BEGINS*/ diff --git a/libc/sysdeps/linux/mips/crt1.S b/libc/sysdeps/linux/mips/crt1.S index 90f69e9c8..6a804125e 100644 --- a/libc/sysdeps/linux/mips/crt1.S +++ b/libc/sysdeps/linux/mips/crt1.S @@ -118,6 +118,7 @@ __start: hlt: /* Crash if somehow `__uClibc_main' returns anyway. */ b hlt +.size __start,.-__start .end __start /* Define a symbol for the first piece of initialized data. */ diff --git a/libc/sysdeps/linux/powerpc/crt1.S b/libc/sysdeps/linux/powerpc/crt1.S index de3aa0814..4f1494a8f 100644 --- a/libc/sysdeps/linux/powerpc/crt1.S +++ b/libc/sysdeps/linux/powerpc/crt1.S @@ -95,6 +95,7 @@ _start: b __uClibc_main #endif +.size _start,.-_start /* Define a symbol for the first piece of initialized data. */ .data diff --git a/libc/sysdeps/linux/powerpc/crtn.S b/libc/sysdeps/linux/powerpc/crtn.S index 938367caa..ba6d0e0c8 100644 --- a/libc/sysdeps/linux/powerpc/crtn.S +++ b/libc/sysdeps/linux/powerpc/crtn.S @@ -9,6 +9,7 @@ addi 1,1,32 mtlr 0 blr + .size _init, .-_init .section .fini .align 2 @@ -19,3 +20,4 @@ addi 1,1,32 mtlr 0 blr + .size _fini, .-_fini diff --git a/libc/sysdeps/linux/sh/crt1.S b/libc/sysdeps/linux/sh/crt1.S index 277c55e69..9707f8316 100644 --- a/libc/sysdeps/linux/sh/crt1.S +++ b/libc/sysdeps/linux/sh/crt1.S @@ -104,6 +104,7 @@ _start: nop #endif + .size _start,.-_start .align 2 #ifdef __PIC__ diff --git a/libc/sysdeps/linux/sh/crtn.S b/libc/sysdeps/linux/sh/crtn.S index e8be7e51f..437f8ebc3 100644 --- a/libc/sysdeps/linux/sh/crtn.S +++ b/libc/sysdeps/linux/sh/crtn.S @@ -15,6 +15,7 @@ .align 2 .L6: .L7: + .size _init, .-_init .section .fini .hidden _fini @@ -30,5 +31,6 @@ .align 2 .L11: .L12: + .size _fini, .-_fini .ident "GCC: (GNU) 3.3.2" diff --git a/libc/sysdeps/linux/sh64/crtn.S b/libc/sysdeps/linux/sh64/crtn.S index 501fe9167..eb6479a56 100644 --- a/libc/sysdeps/linux/sh64/crtn.S +++ b/libc/sysdeps/linux/sh64/crtn.S @@ -14,6 +14,7 @@ ptabs r18, tr0 addi.l r15, 16, r15 blink tr0, r63 + .size _init, .-_init .section .fini .hidden _fini @@ -27,5 +28,6 @@ ptabs r18, tr0 addi.l r15, 16, r15 blink tr0, r63 + .size _fini, .-_fini .ident "GCC: (GNU) 3.3.2" diff --git a/libc/sysdeps/linux/sparc/crt1.S b/libc/sysdeps/linux/sparc/crt1.S index 78aaaccce..f33a714ef 100644 --- a/libc/sysdeps/linux/sparc/crt1.S +++ b/libc/sysdeps/linux/sparc/crt1.S @@ -123,6 +123,7 @@ _start: illtrap 0 #endif +.size _start,.-_start /* Define a symbol for the first piece of initialized data. */ .data diff --git a/libc/sysdeps/linux/sparc/crtn.S b/libc/sysdeps/linux/sparc/crtn.S index d64ffd020..24b4bf43c 100644 --- a/libc/sysdeps/linux/sparc/crtn.S +++ b/libc/sysdeps/linux/sparc/crtn.S @@ -7,6 +7,7 @@ .proc 020 ret restore + .size _init, .-_init .section .fini .align 4 @@ -15,3 +16,4 @@ .proc 020 ret restore + .size _fini, .-_fini diff --git a/libc/sysdeps/linux/v850/crtn.S b/libc/sysdeps/linux/v850/crtn.S index 6bb0b39ac..aecb55737 100644 --- a/libc/sysdeps/linux/v850/crtn.S +++ b/libc/sysdeps/linux/v850/crtn.S @@ -8,6 +8,7 @@ .type __init, @function #NO_APP jr __return_r31 + .size __init, .-__init #APP .section .fini @@ -17,6 +18,7 @@ .type __fini, @function #NO_APP jr __return_r31 + .size __fini, .-__fini #APP .ident "GCC: (GNU) 3.3.2" diff --git a/libc/sysdeps/linux/vax/crtn.S b/libc/sysdeps/linux/vax/crtn.S index 1153fd50b..6ca5c4fcd 100644 --- a/libc/sysdeps/linux/vax/crtn.S +++ b/libc/sysdeps/linux/vax/crtn.S @@ -9,6 +9,7 @@ __gnu_compiled_c: .type _init,@function ret .Lfe2: + .size _init,.Lfe2-_init .section .fini .align 1 @@ -16,4 +17,5 @@ __gnu_compiled_c: .type _fini,@function ret .Lfe3: + .size _fini,.Lfe3-_fini .ident "GCC: (GNU) 2.95.2 19991024 (release) (Linux/VAX CVS)" diff --git a/libc/sysdeps/linux/x86_64/crt1.S b/libc/sysdeps/linux/x86_64/crt1.S index a21be7583..f6c1eb1e7 100644 --- a/libc/sysdeps/linux/x86_64/crt1.S +++ b/libc/sysdeps/linux/x86_64/crt1.S @@ -129,6 +129,7 @@ _start: #endif hlt /* Crash if somehow `exit' does return. */ +.size _start,.-_start /* Define a symbol for the first piece of initialized data. */ .data diff --git a/libc/sysdeps/linux/x86_64/crtn.S b/libc/sysdeps/linux/x86_64/crtn.S index 9804e0f76..5b110d967 100644 --- a/libc/sysdeps/linux/x86_64/crtn.S +++ b/libc/sysdeps/linux/x86_64/crtn.S @@ -7,6 +7,7 @@ .type _init, %function addq $8, %rsp ret +.size _init,.-_init .section .fini @@ -14,3 +15,4 @@ .type _fini, %function addq $8, %rsp ret +.size _fini, .-_fini -- cgit v1.2.3 From 2297e6e1e075070d6e62dfe7cccfab600de12870 Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Thu, 5 May 2011 09:27:15 +0200 Subject: x86_64: fix .size of _init/_fini binutils-2.21 barf on .size that do not evaluate to const, so use the section size and not a function that is not visible here. Signed-off-by: Bernhard Reutner-Fischer --- libc/sysdeps/linux/x86_64/crtn.S | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libc') diff --git a/libc/sysdeps/linux/x86_64/crtn.S b/libc/sysdeps/linux/x86_64/crtn.S index 5b110d967..ec40c21d2 100644 --- a/libc/sysdeps/linux/x86_64/crtn.S +++ b/libc/sysdeps/linux/x86_64/crtn.S @@ -7,7 +7,7 @@ .type _init, %function addq $8, %rsp ret -.size _init,.-_init +.size _init,.-.init .section .fini @@ -15,4 +15,4 @@ .type _fini, %function addq $8, %rsp ret -.size _fini, .-_fini +.size _fini, .-.fini -- cgit v1.2.3 From 5cf382c0f98d1943bcf51ffa8bde6103e1f102ab Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Thu, 5 May 2011 09:33:14 +0200 Subject: i386: fix .size of _init/_fini binutils-2.21 barf on .size that do not evaluate to const, so use the section size and not a function that is not visible here. Signed-off-by: Bernhard Reutner-Fischer --- libc/sysdeps/linux/i386/crtn.S | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libc') diff --git a/libc/sysdeps/linux/i386/crtn.S b/libc/sysdeps/linux/i386/crtn.S index 191250487..ce2608383 100644 --- a/libc/sysdeps/linux/i386/crtn.S +++ b/libc/sysdeps/linux/i386/crtn.S @@ -6,7 +6,7 @@ popl %ebx popl %ebp ret -.size _init,.-_init +.size _init,.-.init @@ -16,7 +16,7 @@ popl %ebx popl %ebp ret -.size _fini,.-_fini +.size _fini,.-.fini -- cgit v1.2.3 From 074930dd7f2a18a7013cdb72cc38136f3be39c40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= Date: Wed, 20 Apr 2011 13:59:15 +0300 Subject: posix_fadvise64: fix x86 implementation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit 73d59554144f429b1cf0d4d7fa7de42bdf59ad92 completely broke the x86 implementation of posix_fadvise64. It moved the first the assembly code retn instruction gets missing depending on the Technically the file has two implementaions for posix_fadvise64, one when __NR_fadvise64_64 is available, and second one if only __NR_fadvise64 is there. Fix the #ifdef's to be proper for that. Signed-off-by: Timo Teräs Signed-off-by: Khem Raj --- libc/sysdeps/linux/i386/posix_fadvise64.S | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'libc') diff --git a/libc/sysdeps/linux/i386/posix_fadvise64.S b/libc/sysdeps/linux/i386/posix_fadvise64.S index b4aeff1f4..8a8947d7b 100644 --- a/libc/sysdeps/linux/i386/posix_fadvise64.S +++ b/libc/sysdeps/linux/i386/posix_fadvise64.S @@ -22,7 +22,7 @@ #include #include -#if defined __NR_fadvise64_64 +#if defined __NR_fadvise64_64 || defined __NR_fadvise64 /* Was named __libc_posix_fadvise64 for some inexplicable reason. ** google says only uclibc has *__libc*_posix_fadviseXXX, @@ -35,6 +35,7 @@ .global posix_fadvise64 .type posix_fadvise64,%function posix_fadvise64: +#if defined __NR_fadvise64_64 /* Save regs */ pushl %ebp pushl %ebx @@ -91,6 +92,7 @@ overflow: /* Returns 0 on success, else an error code. */ negl %eax +#endif /* Successful; return the syscall's value. */ ret -- cgit v1.2.3 From 3e68c52b941636714d2599ea8adda9520ec2de23 Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Tue, 10 May 2011 10:03:58 +0200 Subject: */crtn.S: Remove .size directive for _init and _fini These are split across objects so setting size does not (and never did) work since the expression cannot be computed at assembly time. This avoids errors from recent (> 2.21) gas. Signed-off-by: Bernhard Reutner-Fischer --- libc/sysdeps/linux/arm/crtn.S | 2 -- libc/sysdeps/linux/avr32/crtn.S | 2 -- libc/sysdeps/linux/cris/crtn.S | 2 -- libc/sysdeps/linux/frv/crtn.S | 2 -- libc/sysdeps/linux/h8300/crtn.S | 2 -- libc/sysdeps/linux/i386/crtn.S | 2 -- libc/sysdeps/linux/microblaze/crtn.S | 2 -- libc/sysdeps/linux/powerpc/crtn.S | 2 -- libc/sysdeps/linux/sh/crtn.S | 2 -- libc/sysdeps/linux/sh64/crtn.S | 2 -- libc/sysdeps/linux/sparc/crtn.S | 2 -- libc/sysdeps/linux/v850/crtn.S | 2 -- libc/sysdeps/linux/vax/crtn.S | 2 -- libc/sysdeps/linux/x86_64/crtn.S | 2 -- 14 files changed, 28 deletions(-) (limited to 'libc') diff --git a/libc/sysdeps/linux/arm/crtn.S b/libc/sysdeps/linux/arm/crtn.S index de01b38dc..a4752c186 100644 --- a/libc/sysdeps/linux/arm/crtn.S +++ b/libc/sysdeps/linux/arm/crtn.S @@ -15,7 +15,6 @@ .arm ldmdb fp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, pc} #endif - .size _init, .-_init .section .fini .global _fini @@ -29,7 +28,6 @@ .arm ldmdb fp, {r4, r5, r6, r7, r8, r9, sl, fp, sp, pc} #endif - .size _fini, .-_fini @ In fact this is modified to 3.4.4 .ident "GCC: (GNU) 3.3.2 20031005 (Debian prerelease)" diff --git a/libc/sysdeps/linux/avr32/crtn.S b/libc/sysdeps/linux/avr32/crtn.S index f7d104070..c37f7d201 100644 --- a/libc/sysdeps/linux/avr32/crtn.S +++ b/libc/sysdeps/linux/avr32/crtn.S @@ -4,11 +4,9 @@ .global _init .type _init, @function ldm sp++, r6, pc - .size _init, . - _init .section .fini .align 2 .global _fini .type _fini, @function ldm sp++, r6, pc - .size _fini, . - _fini diff --git a/libc/sysdeps/linux/cris/crtn.S b/libc/sysdeps/linux/cris/crtn.S index 951ae5449..7b2dce17c 100644 --- a/libc/sysdeps/linux/cris/crtn.S +++ b/libc/sysdeps/linux/cris/crtn.S @@ -9,7 +9,6 @@ move.d [$sp+],$r1 Ret nop - .size _init, .-_init .section .fini .align 1 @@ -20,4 +19,3 @@ move.d [$sp+],$r1 Ret nop - .size _fini, .-_fini diff --git a/libc/sysdeps/linux/frv/crtn.S b/libc/sysdeps/linux/frv/crtn.S index 1d58c0207..bd11901ad 100644 --- a/libc/sysdeps/linux/frv/crtn.S +++ b/libc/sysdeps/linux/frv/crtn.S @@ -32,7 +32,6 @@ Cambridge, MA 02139, USA. */ ld @(sp,gr0), fp addi sp,#16,sp jmpl @(gr5,gr0) - .size _init, .-_init .section .fini,"x" .globl _fini @@ -41,4 +40,3 @@ Cambridge, MA 02139, USA. */ ld @(sp,gr0), fp addi sp,#16,sp jmpl @(gr5,gr0) - .size _fini, .-_fini diff --git a/libc/sysdeps/linux/h8300/crtn.S b/libc/sysdeps/linux/h8300/crtn.S index 89e321868..8f9fa1fac 100644 --- a/libc/sysdeps/linux/h8300/crtn.S +++ b/libc/sysdeps/linux/h8300/crtn.S @@ -14,7 +14,6 @@ ; #NO_APP mov.l @er7+,er6 rts - .size __init, .-__init ; #APP .section .fini @@ -24,7 +23,6 @@ ; #NO_APP mov.l @er7+,er6 rts - .size __fini, .-__fini ; #APP .end diff --git a/libc/sysdeps/linux/i386/crtn.S b/libc/sysdeps/linux/i386/crtn.S index ce2608383..34d5b38e2 100644 --- a/libc/sysdeps/linux/i386/crtn.S +++ b/libc/sysdeps/linux/i386/crtn.S @@ -6,7 +6,6 @@ popl %ebx popl %ebp ret -.size _init,.-.init @@ -16,7 +15,6 @@ popl %ebx popl %ebp ret -.size _fini,.-.fini diff --git a/libc/sysdeps/linux/microblaze/crtn.S b/libc/sysdeps/linux/microblaze/crtn.S index da8c920ef..6f4ef60d3 100644 --- a/libc/sysdeps/linux/microblaze/crtn.S +++ b/libc/sysdeps/linux/microblaze/crtn.S @@ -26,7 +26,6 @@ .end _init $Lfe2: - .size _init,$Lfe2-_init .section .fini .align 2 @@ -40,6 +39,5 @@ $Lfe2: .end _fini $Lfe3: - .size _fini,$Lfe3-_fini /*@TRAILER_BEGINS*/ diff --git a/libc/sysdeps/linux/powerpc/crtn.S b/libc/sysdeps/linux/powerpc/crtn.S index ba6d0e0c8..938367caa 100644 --- a/libc/sysdeps/linux/powerpc/crtn.S +++ b/libc/sysdeps/linux/powerpc/crtn.S @@ -9,7 +9,6 @@ addi 1,1,32 mtlr 0 blr - .size _init, .-_init .section .fini .align 2 @@ -20,4 +19,3 @@ addi 1,1,32 mtlr 0 blr - .size _fini, .-_fini diff --git a/libc/sysdeps/linux/sh/crtn.S b/libc/sysdeps/linux/sh/crtn.S index 437f8ebc3..e8be7e51f 100644 --- a/libc/sysdeps/linux/sh/crtn.S +++ b/libc/sysdeps/linux/sh/crtn.S @@ -15,7 +15,6 @@ .align 2 .L6: .L7: - .size _init, .-_init .section .fini .hidden _fini @@ -31,6 +30,5 @@ .align 2 .L11: .L12: - .size _fini, .-_fini .ident "GCC: (GNU) 3.3.2" diff --git a/libc/sysdeps/linux/sh64/crtn.S b/libc/sysdeps/linux/sh64/crtn.S index eb6479a56..501fe9167 100644 --- a/libc/sysdeps/linux/sh64/crtn.S +++ b/libc/sysdeps/linux/sh64/crtn.S @@ -14,7 +14,6 @@ ptabs r18, tr0 addi.l r15, 16, r15 blink tr0, r63 - .size _init, .-_init .section .fini .hidden _fini @@ -28,6 +27,5 @@ ptabs r18, tr0 addi.l r15, 16, r15 blink tr0, r63 - .size _fini, .-_fini .ident "GCC: (GNU) 3.3.2" diff --git a/libc/sysdeps/linux/sparc/crtn.S b/libc/sysdeps/linux/sparc/crtn.S index 24b4bf43c..d64ffd020 100644 --- a/libc/sysdeps/linux/sparc/crtn.S +++ b/libc/sysdeps/linux/sparc/crtn.S @@ -7,7 +7,6 @@ .proc 020 ret restore - .size _init, .-_init .section .fini .align 4 @@ -16,4 +15,3 @@ .proc 020 ret restore - .size _fini, .-_fini diff --git a/libc/sysdeps/linux/v850/crtn.S b/libc/sysdeps/linux/v850/crtn.S index aecb55737..6bb0b39ac 100644 --- a/libc/sysdeps/linux/v850/crtn.S +++ b/libc/sysdeps/linux/v850/crtn.S @@ -8,7 +8,6 @@ .type __init, @function #NO_APP jr __return_r31 - .size __init, .-__init #APP .section .fini @@ -18,7 +17,6 @@ .type __fini, @function #NO_APP jr __return_r31 - .size __fini, .-__fini #APP .ident "GCC: (GNU) 3.3.2" diff --git a/libc/sysdeps/linux/vax/crtn.S b/libc/sysdeps/linux/vax/crtn.S index 6ca5c4fcd..1153fd50b 100644 --- a/libc/sysdeps/linux/vax/crtn.S +++ b/libc/sysdeps/linux/vax/crtn.S @@ -9,7 +9,6 @@ __gnu_compiled_c: .type _init,@function ret .Lfe2: - .size _init,.Lfe2-_init .section .fini .align 1 @@ -17,5 +16,4 @@ __gnu_compiled_c: .type _fini,@function ret .Lfe3: - .size _fini,.Lfe3-_fini .ident "GCC: (GNU) 2.95.2 19991024 (release) (Linux/VAX CVS)" diff --git a/libc/sysdeps/linux/x86_64/crtn.S b/libc/sysdeps/linux/x86_64/crtn.S index ec40c21d2..9804e0f76 100644 --- a/libc/sysdeps/linux/x86_64/crtn.S +++ b/libc/sysdeps/linux/x86_64/crtn.S @@ -7,7 +7,6 @@ .type _init, %function addq $8, %rsp ret -.size _init,.-.init .section .fini @@ -15,4 +14,3 @@ .type _fini, %function addq $8, %rsp ret -.size _fini, .-.fini -- cgit v1.2.3 From 025ec197fe9d069c6d705e6f7d1509bb9dc1ce56 Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Tue, 10 May 2011 20:09:36 +0200 Subject: __uc_malloc: Fix memory-leak in error path Signed-off-by: Bernhard Reutner-Fischer --- libc/stdlib/__uc_malloc.c | 1 + 1 file changed, 1 insertion(+) (limited to 'libc') diff --git a/libc/stdlib/__uc_malloc.c b/libc/stdlib/__uc_malloc.c index 2a2e223ef..449f014fc 100644 --- a/libc/stdlib/__uc_malloc.c +++ b/libc/stdlib/__uc_malloc.c @@ -39,6 +39,7 @@ void *__uc_malloc(size_t size) return p; if (!__uc_malloc_failed) _exit(1); + free(p); __uc_malloc_failed(size); } } -- cgit v1.2.3 From e48bd60ce9a70d190acfee7db98c0f163a2c5fdb Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Tue, 10 May 2011 20:19:46 +0200 Subject: getcwd: Fix memory-leak in error path Signed-off-by: Bernhard Reutner-Fischer --- libc/sysdeps/linux/common/getcwd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'libc') diff --git a/libc/sysdeps/linux/common/getcwd.c b/libc/sysdeps/linux/common/getcwd.c index 75d7a1c8b..87510019e 100644 --- a/libc/sysdeps/linux/common/getcwd.c +++ b/libc/sysdeps/linux/common/getcwd.c @@ -69,7 +69,7 @@ static char *search_dir(dev_t this_dev, ino_t this_ino, char *path_buf, int path slen++; dp = opendir(path_buf); - if (dp == 0) { + if (!dp) { goto oops; } @@ -78,6 +78,7 @@ static char *search_dir(dev_t this_dev, ino_t this_ino, char *path_buf, int path if (slow_search || this_ino == d->d_ino) { # endif if (slen + strlen(d->d_name) > path_size) { + closedir(dp); goto oops; } strcpy(ptr + 1, d->d_name); -- cgit v1.2.3 From 46e3df937b05fa291470e975cd836c5435aa0ecc Mon Sep 17 00:00:00 2001 From: Thierry Reding Date: Wed, 11 May 2011 08:40:58 +0200 Subject: Implement accept4 system call. Signed-off-by: Thierry Reding Signed-off-by: Bernhard Reutner-Fischer --- libc/inet/accept.c | 1 + libc/inet/socketcalls.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) (limited to 'libc') diff --git a/libc/inet/accept.c b/libc/inet/accept.c index 0217a6876..b0fd2b2c6 100644 --- a/libc/inet/accept.c +++ b/libc/inet/accept.c @@ -5,4 +5,5 @@ */ #define L_accept +#define L_accept4 #include "socketcalls.c" diff --git a/libc/inet/socketcalls.c b/libc/inet/socketcalls.c index 42a5a563f..ff5fdaa30 100644 --- a/libc/inet/socketcalls.c +++ b/libc/inet/socketcalls.c @@ -31,6 +31,7 @@ extern int __socketcall(int call, unsigned long *args) attribute_hidden; #define SYS_GETSOCKOPT 15 #define SYS_SENDMSG 16 #define SYS_RECVMSG 17 +#define SYS_ACCEPT4 18 #endif #ifdef __UCLIBC_HAS_THREADS_NATIVE__ @@ -560,3 +561,20 @@ int socketpair(int family, int type, int protocol, int sockvec[2]) } #endif #endif + +#ifdef L_accept4 +#ifdef __NR_accept4 +_syscall4(int, accept4, int, sockfd, struct sockaddr *, addr, socklen_t *, addrlen, int, flags) +#elif defined(__NR_socketcall) +int accept4(int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags) +{ + unsigned long args[4]; + + args[0] = sockfd; + args[1] = (unsigned long) addr; + args[2] = (unsigned long) addrlen; + args[3] = flags; + return __socketcall(SYS_ACCEPT4, args); +} +#endif +#endif -- cgit v1.2.3 From 74a2c71153b910ee4773866ee30be84730a4d5b8 Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Wed, 11 May 2011 11:31:45 +0200 Subject: accept4: Implement cancellation .. and add proper prototype, move it into it's own obj and other such cleanups. Signed-off-by: Bernhard Reutner-Fischer --- libc/inet/Makefile.in | 6 ++- libc/inet/accept.c | 1 - libc/inet/accept4.c | 8 ++++ libc/inet/socketcalls.c | 56 +++++++++++++++++------- libc/sysdeps/linux/common/bits/kernel-features.h | 12 +++++ libc/sysdeps/linux/common/stubs.c | 4 ++ 6 files changed, 68 insertions(+), 19 deletions(-) create mode 100644 libc/inet/accept4.c (limited to 'libc') diff --git a/libc/inet/Makefile.in b/libc/inet/Makefile.in index abcf2f7d7..c490adf7e 100644 --- a/libc/inet/Makefile.in +++ b/libc/inet/Makefile.in @@ -44,11 +44,13 @@ CSRC-$(findstring y,$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6)) += \ ## CSRC-y += encodep.c decodep.c formquery.c # multi source socketcalls.c -socketcalls_CSRC += \ +socketcalls_CSRC-y += \ accept.c bind.c connect.c getpeername.c getsockname.c \ getsockopt.c listen.c recv.c recvfrom.c recvmsg.c send.c sendmsg.c \ sendto.c setsockopt.c shutdown.c socket.c socketpair.c -CSRC-$(UCLIBC_HAS_SOCKET) += $(socketcalls_CSRC) opensock.c +# FIXME: GNU / linux specific +socketcalls_CSRC-y += accept4.c +CSRC-$(UCLIBC_HAS_SOCKET) += $(socketcalls_CSRC-y) opensock.c CSRC-$(findstring y,$(UCLIBC_HAS_SOCKET)$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6)) += ethers.c ether_addr.c diff --git a/libc/inet/accept.c b/libc/inet/accept.c index b0fd2b2c6..0217a6876 100644 --- a/libc/inet/accept.c +++ b/libc/inet/accept.c @@ -5,5 +5,4 @@ */ #define L_accept -#define L_accept4 #include "socketcalls.c" diff --git a/libc/inet/accept4.c b/libc/inet/accept4.c new file mode 100644 index 000000000..e2fdd6c2f --- /dev/null +++ b/libc/inet/accept4.c @@ -0,0 +1,8 @@ +/* + * Copyright (C) 2000-2006 Erik Andersen + * + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. + */ + +#define L_accept4 +#include "socketcalls.c" diff --git a/libc/inet/socketcalls.c b/libc/inet/socketcalls.c index ff5fdaa30..aae7e93bf 100644 --- a/libc/inet/socketcalls.c +++ b/libc/inet/socketcalls.c @@ -83,6 +83,46 @@ weak_alias(__libc_accept,accept) libc_hidden_weak(accept) #endif +#ifdef L_accept4 +#ifdef __NR_accept4 +# define __NR___sys_accept4 __NR_accept4 +static _syscall4(int, __sys_accept4, int, fd, struct sockaddr *, addr, socklen_t *, addrlen, int, flags) +int accept4(int fd, struct sockaddr *addr, socklen_t * addrlen, int flags) +{ + if (SINGLE_THREAD_P) + return __sys_accept4(fd, addr, addrlen, flags); +#ifdef __UCLIBC_HAS_THREADS_NATIVE__ + else { + int oldtype = LIBC_CANCEL_ASYNC (); + int result = __sys_accept4(fd, addr, addrlen, flags); + LIBC_CANCEL_RESET (oldtype); + return result; + } +#endif +} +#elif defined(__NR_socketcall) +int accept4(int fd, struct sockaddr *addr, socklen_t *addrlen, int flags) +{ + unsigned long args[4]; + + args[0] = fd; + args[1] = (unsigned long) addr; + args[2] = (unsigned long) addrlen; + args[3] = flags; + if (SINGLE_THREAD_P) + return __socketcall(SYS_ACCEPT4, args); +#ifdef __UCLIBC_HAS_THREADS_NATIVE__ + else { + int oldtype = LIBC_CANCEL_ASYNC (); + int result = __socketcall(SYS_ACCEPT4, args); + LIBC_CANCEL_RESET (oldtype); + return result; + } +#endif +} +#endif +#endif + #ifdef L_bind #ifdef __NR_bind _syscall3(int, bind, int, sockfd, const struct sockaddr *, myaddr, socklen_t, addrlen) @@ -562,19 +602,3 @@ int socketpair(int family, int type, int protocol, int sockvec[2]) #endif #endif -#ifdef L_accept4 -#ifdef __NR_accept4 -_syscall4(int, accept4, int, sockfd, struct sockaddr *, addr, socklen_t *, addrlen, int, flags) -#elif defined(__NR_socketcall) -int accept4(int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags) -{ - unsigned long args[4]; - - args[0] = sockfd; - args[1] = (unsigned long) addr; - args[2] = (unsigned long) addrlen; - args[3] = flags; - return __socketcall(SYS_ACCEPT4, args); -} -#endif -#endif diff --git a/libc/sysdeps/linux/common/bits/kernel-features.h b/libc/sysdeps/linux/common/bits/kernel-features.h index 68b881c09..b338e0770 100644 --- a/libc/sysdeps/linux/common/bits/kernel-features.h +++ b/libc/sysdeps/linux/common/bits/kernel-features.h @@ -454,6 +454,18 @@ #define __ASSUME_IEEE_RAISE_EXCEPTION 1 #endif +/* Support for the accept4 syscall was added in 2.6.28. */ +#if __LINUX_KERNEL_VERSION >= 0x02061c \ + && (defined __i386__ || defined __x86_64__ || defined __powerpc__ \ + || defined __sparc__ || defined __s390__) +# define __ASSUME_ACCEPT4 1 +#endif + +/* Support for the accept4 syscall for alpha was added after 2.6.33-rc1. */ +#if __LINUX_KERNEL_VERSION >= 0x020621 && defined __alpha__ +# define __ASSUME_ACCEPT4 1 +#endif + /* Support for the FUTEX_CLOCK_REALTIME flag was added in 2.6.29. */ #if __LINUX_KERNEL_VERSION >= 0x02061d # define __ASSUME_FUTEX_CLOCK_REALTIME 1 diff --git a/libc/sysdeps/linux/common/stubs.c b/libc/sysdeps/linux/common/stubs.c index 655c64001..d9379874a 100644 --- a/libc/sysdeps/linux/common/stubs.c +++ b/libc/sysdeps/linux/common/stubs.c @@ -31,6 +31,10 @@ static int enosys_stub(void) # undef __NR_sync_file_range #endif +#ifndef __NR_accept4 +make_stub(accept4) +#endif + #ifndef __NR_bdflush make_stub(bdflush) #endif -- cgit v1.2.3 From 6af34270fa28a4274576a6d068e6a83346480f2e Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Wed, 11 May 2011 12:05:20 +0200 Subject: socketcalls: add stubs Signed-off-by: Bernhard Reutner-Fischer --- libc/sysdeps/linux/common/stubs.c | 94 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) (limited to 'libc') diff --git a/libc/sysdeps/linux/common/stubs.c b/libc/sysdeps/linux/common/stubs.c index d9379874a..1aa07de36 100644 --- a/libc/sysdeps/linux/common/stubs.c +++ b/libc/sysdeps/linux/common/stubs.c @@ -31,6 +31,32 @@ static int enosys_stub(void) # undef __NR_sync_file_range #endif +#ifndef __UCLIBC_HAS_SOCKET__ +# undef __NR_accept +# undef __NR_accept4 +# undef __NR_bind +# undef __NR_connect +# undef __NR_getpeername +# undef __NR_getsockname +# undef __NR_getsockopt +# undef __NR_listen +# undef __NR_recv +# undef __NR_recvfrom +# undef __NR_recvmsg +# undef __NR_send +# undef __NR_sendmsg +# undef __NR_sendto +# undef __NR_setsockopt +# undef __NR_shutdown +# undef __NR_socket +# undef __NR_socketcall +# undef __NR_socketpair +#endif + +#ifndef __NR_accept +make_stub(accept) +#endif + #ifndef __NR_accept4 make_stub(accept4) #endif @@ -39,6 +65,10 @@ make_stub(accept4) make_stub(bdflush) #endif +#ifndef __NR_bind +make_stub(bind) +#endif + #ifndef __NR_capget make_stub(capget) #endif @@ -47,6 +77,10 @@ make_stub(capget) make_stub(capset) #endif +#ifndef __NR_connect +make_stub(connect) +#endif + #ifndef __NR_create_module make_stub(create_module) #endif @@ -95,10 +129,22 @@ make_stub(fsetxattr) make_stub(get_kernel_syms) #endif +#ifndef __NR_getpeername +make_stub(getpeername) +#endif + #if !defined(__NR_getpgrp) && (defined(__NR_getpgid) && (defined(__NR_getpid) || defined(__NR_getxpid))) make_stub(getpgrp) #endif +#ifndef __NR_getsockname +make_stub(getsockname) +#endif + +#ifndef __NR_getsockopt +make_stub(getsockopt) +#endif + #ifndef __NR_getxattr make_stub(getxattr) #endif @@ -111,6 +157,10 @@ make_stub(init_module) make_stub(lgetxattr) #endif +#ifndef __NR_listen +make_stub(listen) +#endif + #ifndef __NR_listxattr make_stub(listxattr) #endif @@ -135,6 +185,18 @@ make_stub(pivot_root) make_stub(query_module) #endif +#ifndef __NR_recv +make_stub(recv) +#endif + +#ifndef __NR_recvfrom +make_stub(recvfrom) +#endif + +#ifndef __NR_recvmsg +make_stub(recvmsg) +#endif + #ifndef __NR_removexattr make_stub(removexattr) #endif @@ -147,14 +209,46 @@ make_stub(sched_getaffinity) make_stub(sched_setaffinity) #endif +#ifndef __NR_send +make_stub(send) +#endif + +#ifndef __NR_sendmsg +make_stub(sendmsg) +#endif + +#ifndef __NR_sendto +make_stub(sendto) +#endif + +#ifndef __NR_setsockopt +make_stub(setsockopt) +#endif + #ifndef __NR_setxattr make_stub(setxattr) #endif +#ifndef __NR_shutdown +make_stub(shutdown) +#endif + #if !defined(__NR_signalfd4) && !defined(__NR_signalfd) make_stub(signalfd) #endif +#ifndef __NR_socket +make_stub(socket) +#endif + +#ifndef __NR_socketcall +make_stub(socketcall) +#endif + +#ifndef __NR_socketpair +make_stub(socketpair) +#endif + #ifndef __NR_rt_sigtimedwait make_stub(sigtimedwait) make_stub(sigwaitinfo) -- cgit v1.2.3 From d3ddb92ea03c89fe7d56a0bcbfbe64743bc51210 Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Wed, 11 May 2011 13:12:14 +0200 Subject: add pipe2() Signed-off-by: Bernhard Reutner-Fischer --- libc/sysdeps/linux/common/Makefile.in | 3 ++- libc/sysdeps/linux/common/bits/kernel-features.h | 13 +++++++++++++ libc/sysdeps/linux/common/pipe2.c | 16 ++++++++++++++++ libc/sysdeps/linux/common/stubs.c | 8 ++++++++ 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 libc/sysdeps/linux/common/pipe2.c (limited to 'libc') diff --git a/libc/sysdeps/linux/common/Makefile.in b/libc/sysdeps/linux/common/Makefile.in index 8811268d0..d97c73dcb 100644 --- a/libc/sysdeps/linux/common/Makefile.in +++ b/libc/sysdeps/linux/common/Makefile.in @@ -19,7 +19,8 @@ CSRC-$(UCLIBC_LINUX_MODULE_24) += create_module.c query_module.c \ get_kernel_syms.c # we need these internally: fstatfs.c statfs.c CSRC-$(UCLIBC_LINUX_SPECIFIC) += capget.c capset.c inotify.c ioperm.c iopl.c \ - madvise.c modify_ldt.c personality.c ppoll.c prctl.c readahead.c reboot.c \ + madvise.c modify_ldt.c pipe2.c personality.c ppoll.c prctl.c \ + readahead.c reboot.c \ remap_file_pages.c sched_getaffinity.c sched_setaffinity.c \ sendfile64.c sendfile.c setfsgid.c setfsuid.c setresuid.c \ splice.c vmsplice.c tee.c signalfd.c swapoff.c swapon.c \ diff --git a/libc/sysdeps/linux/common/bits/kernel-features.h b/libc/sysdeps/linux/common/bits/kernel-features.h index b338e0770..6bf554457 100644 --- a/libc/sysdeps/linux/common/bits/kernel-features.h +++ b/libc/sysdeps/linux/common/bits/kernel-features.h @@ -309,6 +309,19 @@ # define __ASSUME_O_CLOEXEC 1 #endif +/* Support for various CLOEXEC and NONBLOCK flags was added for x86, + * x86-64, PPC, IA-64, and SPARC in 2.6.27. */ +#if __LINUX_KERNEL_VERSION >= 0x02061b \ + && (defined __i386__ || defined __x86_64__ || defined __powerpc__ \ + || defined __ia64__ || defined __sparc__ || defined __s390__) +/* # define __ASSUME_SOCK_CLOEXEC 1 */ +/* # define __ASSUME_IN_NONBLOCK 1 */ +# define __ASSUME_PIPE2 1 +/* # define __ASSUME_EVENTFD2 1 */ +/* # define __ASSUME_SIGNALFD4 1 */ +#endif + + /* These features were surely available with 2.4.12. */ #if __LINUX_KERNEL_VERSION >= 132108 && defined __mc68000__ # define __ASSUME_MMAP2_SYSCALL 1 diff --git a/libc/sysdeps/linux/common/pipe2.c b/libc/sysdeps/linux/common/pipe2.c new file mode 100644 index 000000000..0a3686d81 --- /dev/null +++ b/libc/sysdeps/linux/common/pipe2.c @@ -0,0 +1,16 @@ +/* vi: set sw=4 ts=4: */ +/* + * pipe2() for uClibc + * + * Copyright (C) 2011 Bernhard Reutner-Fischer + * + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. + */ + +#include +#include + +#ifdef __NR_pipe2 +_syscall2(int, pipe2, int *, filedes, int, flags) +libc_hidden_def(pipe2) +#endif diff --git a/libc/sysdeps/linux/common/stubs.c b/libc/sysdeps/linux/common/stubs.c index 1aa07de36..f7c6dc5c5 100644 --- a/libc/sysdeps/linux/common/stubs.c +++ b/libc/sysdeps/linux/common/stubs.c @@ -31,6 +31,10 @@ static int enosys_stub(void) # undef __NR_sync_file_range #endif +#ifndef __UCLIBC_LINUX_SPECIFIC__ +# undef __NR_pipe2 +#endif + #ifndef __UCLIBC_HAS_SOCKET__ # undef __NR_accept # undef __NR_accept4 @@ -177,6 +181,10 @@ make_stub(lremovexattr) make_stub(lsetxattr) #endif +#ifndef __NR_pipe2 +make_stub(pipe2) +#endif + #ifndef __NR_pivot_root make_stub(pivot_root) #endif -- cgit v1.2.3 From bf5dd19d97991de30486abaedb1868f6eb049a70 Mon Sep 17 00:00:00 2001 From: Thierry Reding Date: Wed, 11 May 2011 09:28:13 +0200 Subject: Implement epoll_create1 and epoll_pwait system calls. Note: TODO: This lacks cancellation support. Signed-off-by: Thierry Reding Signed-off-by: Bernhard Reutner-Fischer --- libc/sysdeps/linux/common/epoll.c | 16 ++++++++++++++ libc/sysdeps/linux/common/sys/epoll.h | 40 +++++++++++++++++++++++++++++++---- libc/sysdeps/linux/x86_64/sys/epoll.h | 36 ++++++++++++++++++++++++++++++- 3 files changed, 87 insertions(+), 5 deletions(-) (limited to 'libc') diff --git a/libc/sysdeps/linux/common/epoll.c b/libc/sysdeps/linux/common/epoll.c index dda92282e..41c4eacc2 100644 --- a/libc/sysdeps/linux/common/epoll.c +++ b/libc/sysdeps/linux/common/epoll.c @@ -17,6 +17,13 @@ _syscall1(int, epoll_create, int, size) #endif +/* + * epoll_create1() + */ +#ifdef __NR_epoll_create1 +_syscall1(int, epoll_create1, int, flags) +#endif + /* * epoll_ctl() */ @@ -29,4 +36,13 @@ _syscall4(int,epoll_ctl, int, epfd, int, op, int, fd, struct epoll_event *, even */ #ifdef __NR_epoll_wait _syscall4(int, epoll_wait, int, epfd, struct epoll_event *, events, int, maxevents, int, timeout) +/* TODO: add cancellation for epoll_wait */ +#endif + +/* + * epoll_pwait() + */ +#ifdef __NR_epoll_pwait +_syscall5(int, epoll_pwait, int, epfd, struct epoll_event *, events, int, maxevents, int, timeout, __const sigset_t *, ss) +/* TODO: add cancellation for epoll_pwait */ #endif diff --git a/libc/sysdeps/linux/common/sys/epoll.h b/libc/sysdeps/linux/common/sys/epoll.h index 44e814bfd..f6a648872 100644 --- a/libc/sysdeps/linux/common/sys/epoll.h +++ b/libc/sysdeps/linux/common/sys/epoll.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +/* Copyright (C) 2002-2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -22,6 +22,24 @@ #include #include +/* Get __sigset_t. */ +#include + +#ifndef __sigset_t_defined +# define __sigset_t_defined +typedef __sigset_t sigset_t; +#endif + + +/* Flags to be passed to epoll_create1. */ +enum + { + EPOLL_CLOEXEC = 02000000, +#define EPOLL_CLOEXEC EPOLL_CLOEXEC + EPOLL_NONBLOCK = 04000 +#define EPOLL_NONBLOCK EPOLL_NONBLOCK + }; + enum EPOLL_EVENTS { @@ -55,9 +73,9 @@ enum EPOLL_EVENTS /* Valid opcodes ( "op" parameter ) to issue to epoll_ctl(). */ -#define EPOLL_CTL_ADD 1 /* Add a file decriptor to the interface. */ -#define EPOLL_CTL_DEL 2 /* Remove a file decriptor from the interface. */ -#define EPOLL_CTL_MOD 3 /* Change file decriptor epoll_event structure. */ +#define EPOLL_CTL_ADD 1 /* Add a file descriptor to the interface. */ +#define EPOLL_CTL_DEL 2 /* Remove a file descriptor from the interface. */ +#define EPOLL_CTL_MOD 3 /* Change file descriptor epoll_event structure. */ typedef union epoll_data @@ -83,6 +101,10 @@ __BEGIN_DECLS returned by epoll_create() should be closed with close(). */ extern int epoll_create (int __size) __THROW; +/* Same as epoll_create but with a FLAGS parameter. The unused SIZE + parameter has been dropped. */ +extern int epoll_create1 (int __flags) __THROW; + /* Manipulate an epoll instance "epfd". Returns 0 in case of success, -1 in case of error ( the "errno" variable will contain the @@ -107,6 +129,16 @@ extern int epoll_ctl (int __epfd, int __op, int __fd, extern int epoll_wait (int __epfd, struct epoll_event *__events, int __maxevents, int __timeout); + +/* Same as epoll_wait, but the thread's signal mask is temporarily + and atomically replaced with the one provided as parameter. + + This function is a cancellation point and therefore not marked with + __THROW. */ +extern int epoll_pwait (int __epfd, struct epoll_event *__events, + int __maxevents, int __timeout, + __const __sigset_t *__ss); + __END_DECLS #endif /* sys/epoll.h */ diff --git a/libc/sysdeps/linux/x86_64/sys/epoll.h b/libc/sysdeps/linux/x86_64/sys/epoll.h index 02672d3c7..a8171cc36 100644 --- a/libc/sysdeps/linux/x86_64/sys/epoll.h +++ b/libc/sysdeps/linux/x86_64/sys/epoll.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2002,2003,2004,2005,2006 Free Software Foundation, Inc. +/* Copyright (C) 2002-2008, 2010 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -22,6 +22,24 @@ #include #include +/* Get __sigset_t. */ +#include + +#ifndef __sigset_t_defined +# define __sigset_t_defined +typedef __sigset_t sigset_t; +#endif + + +/* Flags to be passed to epoll_create1. */ +enum + { + EPOLL_CLOEXEC = 02000000, +#define EPOLL_CLOEXEC EPOLL_CLOEXEC + EPOLL_NONBLOCK = 04000 +#define EPOLL_NONBLOCK EPOLL_NONBLOCK + }; + enum EPOLL_EVENTS { @@ -45,6 +63,8 @@ enum EPOLL_EVENTS #define EPOLLERR EPOLLERR EPOLLHUP = 0x010, #define EPOLLHUP EPOLLHUP + EPOLLRDHUP = 0x2000, +#define EPOLLRDHUP EPOLLRDHUP EPOLLONESHOT = (1 << 30), #define EPOLLONESHOT EPOLLONESHOT EPOLLET = (1 << 31) @@ -81,6 +101,10 @@ __BEGIN_DECLS returned by epoll_create() should be closed with close(). */ extern int epoll_create (int __size) __THROW; +/* Same as epoll_create but with a FLAGS parameter. The unused SIZE + parameter has been dropped. */ +extern int epoll_create1 (int __flags) __THROW; + /* Manipulate an epoll instance "epfd". Returns 0 in case of success, -1 in case of error ( the "errno" variable will contain the @@ -105,6 +129,16 @@ extern int epoll_ctl (int __epfd, int __op, int __fd, extern int epoll_wait (int __epfd, struct epoll_event *__events, int __maxevents, int __timeout); + +/* Same as epoll_wait, but the thread's signal mask is temporarily + and atomically replaced with the one provided as parameter. + + This function is a cancellation point and therefore not marked with + __THROW. */ +extern int epoll_pwait (int __epfd, struct epoll_event *__events, + int __maxevents, int __timeout, + __const __sigset_t *__ss); + __END_DECLS #endif /* sys/epoll.h */ -- cgit v1.2.3 From c91c3a2b27f5909e190cde4518383864298e82af Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Wed, 11 May 2011 22:03:33 +0200 Subject: commentary typo fix use cancellation (with two 'l') uniformly. Signed-off-by: Bernhard Reutner-Fischer --- libc/sysdeps/linux/x86_64/sys/epoll.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'libc') diff --git a/libc/sysdeps/linux/x86_64/sys/epoll.h b/libc/sysdeps/linux/x86_64/sys/epoll.h index a8171cc36..bd5b30812 100644 --- a/libc/sysdeps/linux/x86_64/sys/epoll.h +++ b/libc/sysdeps/linux/x86_64/sys/epoll.h @@ -73,9 +73,9 @@ enum EPOLL_EVENTS /* Valid opcodes ( "op" parameter ) to issue to epoll_ctl(). */ -#define EPOLL_CTL_ADD 1 /* Add a file decriptor to the interface. */ -#define EPOLL_CTL_DEL 2 /* Remove a file decriptor from the interface. */ -#define EPOLL_CTL_MOD 3 /* Change file decriptor epoll_event structure. */ +#define EPOLL_CTL_ADD 1 /* Add a file descriptor to the interface. */ +#define EPOLL_CTL_DEL 2 /* Remove a file descriptor from the interface. */ +#define EPOLL_CTL_MOD 3 /* Change file descriptor epoll_event structure. */ typedef union epoll_data -- cgit v1.2.3 From 3e72d1b5129c51cabf6b501a4698f7c2433781ce Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Wed, 11 May 2011 22:17:23 +0200 Subject: epoll: unify epoll.h --- libc/sysdeps/linux/common/sys/epoll.h | 26 +++++- libc/sysdeps/linux/x86_64/sys/epoll.h | 144 ---------------------------------- 2 files changed, 24 insertions(+), 146 deletions(-) delete mode 100644 libc/sysdeps/linux/x86_64/sys/epoll.h (limited to 'libc') diff --git a/libc/sysdeps/linux/common/sys/epoll.h b/libc/sysdeps/linux/common/sys/epoll.h index f6a648872..a04bd704c 100644 --- a/libc/sysdeps/linux/common/sys/epoll.h +++ b/libc/sysdeps/linux/common/sys/epoll.h @@ -32,12 +32,30 @@ typedef __sigset_t sigset_t; /* Flags to be passed to epoll_create1. */ + enum { +#if defined __alpha__ + EPOLL_CLOEXEC = 010000000, +# define EPOLL_CLOEXEC EPOLL_CLOEXEC + EPOLL_NONBLOCK = 04 +# define EPOLL_NONBLOCK EPOLL_NONBLOCK +#else +# if defined __sparc__ + EPOLL_CLOEXEC = 020000000, +# else EPOLL_CLOEXEC = 02000000, -#define EPOLL_CLOEXEC EPOLL_CLOEXEC +# endif +# define EPOLL_CLOEXEC EPOLL_CLOEXEC +# if defined __mips__ + EPOLL_NONBLOCK = 0200 +# elif defined __sparc__ + EPOLL_NONBLOCK = 040000 +# else EPOLL_NONBLOCK = 04000 +# endif #define EPOLL_NONBLOCK EPOLL_NONBLOCK +#endif }; @@ -90,7 +108,11 @@ struct epoll_event { uint32_t events; /* Epoll events */ epoll_data_t data; /* User data variable */ -}; +} +#if defined __x86_64__ +__attribute__((packed)) +#endif +; __BEGIN_DECLS diff --git a/libc/sysdeps/linux/x86_64/sys/epoll.h b/libc/sysdeps/linux/x86_64/sys/epoll.h deleted file mode 100644 index bd5b30812..000000000 --- a/libc/sysdeps/linux/x86_64/sys/epoll.h +++ /dev/null @@ -1,144 +0,0 @@ -/* Copyright (C) 2002-2008, 2010 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifndef _SYS_EPOLL_H -#define _SYS_EPOLL_H 1 - -#include -#include - -/* Get __sigset_t. */ -#include - -#ifndef __sigset_t_defined -# define __sigset_t_defined -typedef __sigset_t sigset_t; -#endif - - -/* Flags to be passed to epoll_create1. */ -enum - { - EPOLL_CLOEXEC = 02000000, -#define EPOLL_CLOEXEC EPOLL_CLOEXEC - EPOLL_NONBLOCK = 04000 -#define EPOLL_NONBLOCK EPOLL_NONBLOCK - }; - - -enum EPOLL_EVENTS - { - EPOLLIN = 0x001, -#define EPOLLIN EPOLLIN - EPOLLPRI = 0x002, -#define EPOLLPRI EPOLLPRI - EPOLLOUT = 0x004, -#define EPOLLOUT EPOLLOUT - EPOLLRDNORM = 0x040, -#define EPOLLRDNORM EPOLLRDNORM - EPOLLRDBAND = 0x080, -#define EPOLLRDBAND EPOLLRDBAND - EPOLLWRNORM = 0x100, -#define EPOLLWRNORM EPOLLWRNORM - EPOLLWRBAND = 0x200, -#define EPOLLWRBAND EPOLLWRBAND - EPOLLMSG = 0x400, -#define EPOLLMSG EPOLLMSG - EPOLLERR = 0x008, -#define EPOLLERR EPOLLERR - EPOLLHUP = 0x010, -#define EPOLLHUP EPOLLHUP - EPOLLRDHUP = 0x2000, -#define EPOLLRDHUP EPOLLRDHUP - EPOLLONESHOT = (1 << 30), -#define EPOLLONESHOT EPOLLONESHOT - EPOLLET = (1 << 31) -#define EPOLLET EPOLLET - }; - - -/* Valid opcodes ( "op" parameter ) to issue to epoll_ctl(). */ -#define EPOLL_CTL_ADD 1 /* Add a file descriptor to the interface. */ -#define EPOLL_CTL_DEL 2 /* Remove a file descriptor from the interface. */ -#define EPOLL_CTL_MOD 3 /* Change file descriptor epoll_event structure. */ - - -typedef union epoll_data -{ - void *ptr; - int fd; - uint32_t u32; - uint64_t u64; -} epoll_data_t; - -struct epoll_event -{ - uint32_t events; /* Epoll events */ - epoll_data_t data; /* User data variable */ -} __attribute__ ((__packed__)); - - -__BEGIN_DECLS - -/* Creates an epoll instance. Returns an fd for the new instance. - The "size" parameter is a hint specifying the number of file - descriptors to be associated with the new instance. The fd - returned by epoll_create() should be closed with close(). */ -extern int epoll_create (int __size) __THROW; - -/* Same as epoll_create but with a FLAGS parameter. The unused SIZE - parameter has been dropped. */ -extern int epoll_create1 (int __flags) __THROW; - - -/* Manipulate an epoll instance "epfd". Returns 0 in case of success, - -1 in case of error ( the "errno" variable will contain the - specific error code ) The "op" parameter is one of the EPOLL_CTL_* - constants defined above. The "fd" parameter is the target of the - operation. The "event" parameter describes which events the caller - is interested in and any associated user data. */ -extern int epoll_ctl (int __epfd, int __op, int __fd, - struct epoll_event *__event) __THROW; - - -/* Wait for events on an epoll instance "epfd". Returns the number of - triggered events returned in "events" buffer. Or -1 in case of - error with the "errno" variable set to the specific error code. The - "events" parameter is a buffer that will contain triggered - events. The "maxevents" is the maximum number of events to be - returned ( usually size of "events" ). The "timeout" parameter - specifies the maximum wait time in milliseconds (-1 == infinite). - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern int epoll_wait (int __epfd, struct epoll_event *__events, - int __maxevents, int __timeout); - - -/* Same as epoll_wait, but the thread's signal mask is temporarily - and atomically replaced with the one provided as parameter. - - This function is a cancellation point and therefore not marked with - __THROW. */ -extern int epoll_pwait (int __epfd, struct epoll_event *__events, - int __maxevents, int __timeout, - __const __sigset_t *__ss); - -__END_DECLS - -#endif /* sys/epoll.h */ -- cgit v1.2.3 From 213709e1e14418f728b52c8fefb4af505c99d567 Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Thu, 12 May 2011 10:07:25 +0200 Subject: socket: fix stubs Signed-off-by: Bernhard Reutner-Fischer --- libc/sysdeps/linux/common/stubs.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'libc') diff --git a/libc/sysdeps/linux/common/stubs.c b/libc/sysdeps/linux/common/stubs.c index f7c6dc5c5..e14bbc3a0 100644 --- a/libc/sysdeps/linux/common/stubs.c +++ b/libc/sysdeps/linux/common/stubs.c @@ -57,11 +57,11 @@ static int enosys_stub(void) # undef __NR_socketpair #endif -#ifndef __NR_accept +#if !defined __NR_accept && !defined __NR_socketcall && !defined __UCLIBC_HAS_SOCKET__ make_stub(accept) #endif -#ifndef __NR_accept4 +#if !defined __NR_accept4 && !defined __NR_socketcall && !defined __UCLIBC_HAS_SOCKET__ make_stub(accept4) #endif @@ -69,7 +69,7 @@ make_stub(accept4) make_stub(bdflush) #endif -#ifndef __NR_bind +#if !defined __NR_bind && !defined __NR_socketcall && !defined __UCLIBC_HAS_SOCKET__ make_stub(bind) #endif @@ -81,7 +81,7 @@ make_stub(capget) make_stub(capset) #endif -#ifndef __NR_connect +#if !defined __NR_connect && !defined __NR_socketcall && !defined __UCLIBC_HAS_SOCKET__ make_stub(connect) #endif @@ -133,7 +133,7 @@ make_stub(fsetxattr) make_stub(get_kernel_syms) #endif -#ifndef __NR_getpeername +#if !defined __NR_getpeername && !defined __NR_socketcall && !defined __UCLIBC_HAS_SOCKET__ make_stub(getpeername) #endif @@ -141,11 +141,11 @@ make_stub(getpeername) make_stub(getpgrp) #endif -#ifndef __NR_getsockname +#if !defined __NR_getsockname && !defined __NR_socketcall && !defined __UCLIBC_HAS_SOCKET__ make_stub(getsockname) #endif -#ifndef __NR_getsockopt +#if !defined __NR_getsockopt && !defined __NR_socketcall && !defined __UCLIBC_HAS_SOCKET__ make_stub(getsockopt) #endif @@ -161,7 +161,7 @@ make_stub(init_module) make_stub(lgetxattr) #endif -#ifndef __NR_listen +#if !defined __NR_listen && !defined __NR_socketcall && !defined __UCLIBC_HAS_SOCKET__ make_stub(listen) #endif @@ -193,15 +193,15 @@ make_stub(pivot_root) make_stub(query_module) #endif -#ifndef __NR_recv +#if !defined __NR_recv && !defined __NR_socketcall && !defined __UCLIBC_HAS_SOCKET__ make_stub(recv) #endif -#ifndef __NR_recvfrom +#if !defined __NR_recvfrom && !defined __NR_socketcall && !defined __UCLIBC_HAS_SOCKET__ make_stub(recvfrom) #endif -#ifndef __NR_recvmsg +#if !defined __NR_recvmsg && !defined __NR_socketcall && !defined __UCLIBC_HAS_SOCKET__ make_stub(recvmsg) #endif @@ -217,19 +217,19 @@ make_stub(sched_getaffinity) make_stub(sched_setaffinity) #endif -#ifndef __NR_send +#if !defined __NR_s