Skip to content

Commit

Permalink
Powerpc: correct duplicate label issue with multiple passes through c…
Browse files Browse the repository at this point in the history
…ontext code
  • Loading branch information
Will Schmidt authored and Ulrich Drepper committed Jan 12, 2012
1 parent 0cc5ed3 commit 929d11c
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 11 deletions.
8 changes: 8 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
2012-01-04 Will Schmidt <will_schmidt@vnet.ibm.com>

* powerpc/powerpc32/sysdep.h: Add GLUE and GENERATE_GOT_LABEL macros.
* unix/sysv/linux/powerpc/powerpc32/getcontext-common.S: Call
macro to ensure uniqueness of label name.
* unix/sysv/linux/powerpc/powerpc32/setcontext-common.S: Likewise.
* unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S: Likewise.

2012-01-11 Ulrich Drepper <drepper@gmail.com>

* sysdeps/ieee754/dbl-64/wordsize-64/e_acosh.c: New file.
Expand Down
8 changes: 6 additions & 2 deletions sysdeps/powerpc/powerpc32/sysdep.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* Assembly macros for 32-bit PowerPC.
Copyright (C) 1999, 2001, 2002, 2003, 2006, 2011
Copyright (C) 1999, 2001, 2002, 2003, 2006, 2011, 2012
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Expand Down Expand Up @@ -93,7 +93,7 @@ GOT_LABEL: ; \
ASM_SIZE_DIRECTIVE(name)

#define DO_CALL(syscall) \
li 0,syscall; \
li 0,syscall; \
sc

#undef JUMPTARGET
Expand Down Expand Up @@ -153,6 +153,10 @@ GOT_LABEL: ; \
#undef L
#define L(x) .L##x

#define XGLUE(a,b) a##b
#define GLUE(a,b) XGLUE (a,b)
#define GENERATE_GOT_LABEL(name) GLUE (.got_label, name)

/* Label in text section. */
#define C_TEXT(name) name

Expand Down
14 changes: 7 additions & 7 deletions sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* Save current context, powerpc32 common.
Copyright (C) 2005, 2006, 2011 Free Software Foundation, Inc.
Copyright (C) 2005, 2006, 2011, 2012 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
Expand All @@ -18,13 +18,13 @@
02110-1301 USA. */

/* This is the common implementation of getcontext for powerpc32.
It not complete in itself should be included in to a framework that
It not complete in itself should be included in to a framework that
defines:
__CONTEXT_FUNC_NAME
and if appropriate:
__CONTEXT_ENABLE_FPRS
__CONTEXT_ENABLE_VRS
Any archecture that implements the Vector unit is assumed to also
Any archecture that implements the Vector unit is assumed to also
implement the floating unit. */

/* Stack frame offsets. */
Expand Down Expand Up @@ -145,6 +145,7 @@ ENTRY(__CONTEXT_FUNC_NAME)
# ifdef __CONTEXT_ENABLE_VRS
# ifdef PIC
mflr r8
# define got_label GENERATE_GOT_LABEL (__CONTEXT_FUNC_NAME)
SETUP_GOT_ACCESS(r7,got_label)
addis r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@ha
addi r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@l
Expand All @@ -165,9 +166,9 @@ ENTRY(__CONTEXT_FUNC_NAME)

la r10,(_UC_VREGS)(r3)
la r9,(_UC_VREGS+16)(r3)

beq 2f /* L(no_vec) */
/* address of the combined VSCR/VSAVE quadword. */
/* address of the combined VSCR/VSAVE quadword. */
la r8,(_UC_VREGS+512)(r3)

/* Save the vector registers */
Expand All @@ -186,7 +187,7 @@ ENTRY(__CONTEXT_FUNC_NAME)
addi r9,r9,32

stvx v0,0,r8

stvx v4,0,r10
stvx v5,0,r9
addi r10,r10,32
Expand Down Expand Up @@ -277,4 +278,3 @@ ENTRY(__CONTEXT_FUNC_NAME)
mtlr r0
blr
END(__CONTEXT_FUNC_NAME)

Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* Jump to a new context powerpc32 common.
Copyright (C) 2005, 2006, 2008, 2009, 2011 Free Software Foundation, Inc.
Copyright (C) 2005, 2006, 2008, 2009, 2011, 2012 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
Expand Down Expand Up @@ -73,6 +73,7 @@ ENTRY(__CONTEXT_FUNC_NAME)

#ifdef PIC
mflr r8
# define got_label GENERATE_GOT_LABEL (__CONTEXT_FUNC_NAME)
SETUP_GOT_ACCESS(r7,got_label)
addis r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@ha
addi r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@l
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* Save current context and jump to a new context.
Copyright (C) 2005, 2006, 2008, 2009, 2011 Free Software Foundation, Inc.
Copyright (C) 2005,2006,2008,2009,2011,2012 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
Expand Down Expand Up @@ -146,6 +146,7 @@ ENTRY(__CONTEXT_FUNC_NAME)

# ifdef PIC
mflr r8
# define got_label GENERATE_GOT_LABEL (__CONTEXT_FUNC_NAME)
SETUP_GOT_ACCESS(r7,got_label)
addis r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@ha
addi r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@l
Expand Down

0 comments on commit 929d11c

Please sign in to comment.