www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1996/06/16/18:09:07

Xref: news2.mv.net comp.os.msdos.djgpp:5045
From: Shawn Hargreaves <slh100 AT york DOT ac DOT uk>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Help new user with linking problems...
Date: Sun, 16 Jun 1996 10:41:55 +0100
Organization: The University of York, UK
Lines: 32
Message-ID: <Pine.SGI.3.91.960616102823.10098A-100000@sgi1.york.ac.uk>
NNTP-Posting-Host: sgi1.york.ac.uk
Mime-Version: 1.0
In-Reply-To: <4pvael$dic@status.gen.nz>
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

On Sat, 15 Jun 1996, Bruce Foley wrote:

> I want to be able to write external assembler routines to supplement
> my main C program.  With this in mind, I wrote a simple AT&T module
> and assembled it with "as", producing a .o object file.
> By looking at other code, it appears that all I need to do is declare
> the routine as .global to make it accessable to a C program.
> I then wrote a simple C program that prototypes the external routine
> as extern, but I get an "undefined reference" error message  in my C
> program when linking.  What am I doing wrong?

Did you remember to prefix your asm function with an underbar? GCC 
automatically does this to all C functions. In your .s file, put:

	.globl _asm_routine
	_asm_routine:
		ret

And in your .c file, put:

	extern void asm_routine();

	asm_routine();



/*
 *	Shawn Hargreaves.        Why is 'phonetic' spelt with a ph?
 *	Check out Allegro and FED on http://www.york.ac.uk/~slh100/
 */


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019