Fixed an assembler warning / error (depending on the version of GAS used).

Fixed a crash in the optimized pthreads dispatch path.
This commit is contained in:
Ian Romanick
2004-08-17 17:03:24 +00:00
parent 51830613a9
commit 6fc61be869
2 changed files with 6 additions and 22 deletions
+3 -11
View File
@@ -72,7 +72,7 @@ class PrintGenericStubs(gl_XML.FilterGLAPISpecBase):
print '#define GL_OFFSET(x) CODEPTR(REGOFF(4 * x, EAX))'
print ''
print '#if defined(GNU_ASSEMBLER) && !defined(__DJGPP__) && !defined(__MINGW32__)'
print '#define GLOBL_FN(x) GLOBL x ; .type x,@function'
print '#define GLOBL_FN(x) GLOBL x ; .type x, function'
print '#else'
print '#define GLOBL_FN(x) GLOBL x'
print '#endif'
@@ -90,7 +90,7 @@ class PrintGenericStubs(gl_XML.FilterGLAPISpecBase):
print '\tTEST_L(EAX, EAX) ;\t\t\t\t\\'
print '\tJE(1f) ;\t\t\t\t\t\\'
print '\tJMP(GL_OFFSET(off)) ;\t\t\t\t\\'
print '1:\tCALL(get_dispatch) ;\t\t\t\t\\'
print '1:\tCALL(_x86_get_dispatch) ;\t\t\t\\'
print '\tJMP(GL_OFFSET(off))'
print '#elif defined(THREADS)'
print '# define GL_STUB(fn,off,fn_alt)\t\t\t\\'
@@ -117,21 +117,13 @@ class PrintGenericStubs(gl_XML.FilterGLAPISpecBase):
print '#ifdef PTHREADS'
print 'EXTERN GLNAME(_glapi_Dispatch)'
print 'EXTERN GLNAME(_gl_DispatchTSD)'
print '#ifdef __PIC__'
print 'EXTERN GLNAME(pthread_getspecific@PLT)'
print '#else'
print 'EXTERN GLNAME(pthread_getspecific)'
print '#endif'
print ''
print 'ALIGNTEXT16'
print 'GLNAME(get_dispatch):'
print 'GLNAME(_x86_get_dispatch):'
print '\tSUB_L(CONST(24), ESP)'
print '\tPUSH_L(GLNAME(_gl_DispatchTSD))'
print '#ifdef __PIC__'
print '\tCALL(GLNAME(pthread_getspecific@PLT))'
print '#else'
print '\tCALL(GLNAME(pthread_getspecific))'
print '#endif'
print '\tADD_L(CONST(28), ESP)'
print '\tRET'
print '#elif defined(THREADS)'
+3 -11
View File
@@ -42,7 +42,7 @@
#define GL_OFFSET(x) CODEPTR(REGOFF(4 * x, EAX))
#if defined(GNU_ASSEMBLER) && !defined(__DJGPP__) && !defined(__MINGW32__)
#define GLOBL_FN(x) GLOBL x ; .type x,@function
#define GLOBL_FN(x) GLOBL x ; .type x, function
#else
#define GLOBL_FN(x) GLOBL x
#endif
@@ -60,7 +60,7 @@ GL_PREFIX(fn, fn_alt): \
TEST_L(EAX, EAX) ; \
JE(1f) ; \
JMP(GL_OFFSET(off)) ; \
1: CALL(get_dispatch) ; \
1: CALL(_x86_get_dispatch) ; \
JMP(GL_OFFSET(off))
#elif defined(THREADS)
# define GL_STUB(fn,off,fn_alt) \
@@ -87,21 +87,13 @@ SEG_TEXT
#ifdef PTHREADS
EXTERN GLNAME(_glapi_Dispatch)
EXTERN GLNAME(_gl_DispatchTSD)
#ifdef __PIC__
EXTERN GLNAME(pthread_getspecific@PLT)
#else
EXTERN GLNAME(pthread_getspecific)
#endif
ALIGNTEXT16
GLNAME(get_dispatch):
GLNAME(_x86_get_dispatch):
SUB_L(CONST(24), ESP)
PUSH_L(GLNAME(_gl_DispatchTSD))
#ifdef __PIC__
CALL(GLNAME(pthread_getspecific@PLT))
#else
CALL(GLNAME(pthread_getspecific))
#endif
ADD_L(CONST(28), ESP)
RET
#elif defined(THREADS)