Android bionic libc 에서 특정 함수를 바꾸려고 하는데 undefined reference 에러가 납니다

taesaza0의 이미지

안녕하세요
안드로이드 libc 인 bionic libc 에서
시스템 콜의 랩퍼 함수를 만들고 있습니다

read 에 대한 랩퍼 함수를 만든다고 예로 든다면

풀소스 디렉토리에서
sourcedir/bionic/libc/arch-arm/syscalls 디렉토리 내의
read.S 의 소스 중 함수 선언 관련된 부분을

.type read #function     -> .type __read #function
.globl read                  -> .globl __read
 
read:                          -> __read

와 같이 고치고

sourcedir/bionic/libc/mydir/read.c 라는 파일을 만들어

#include <sys/types.h>                                                   
#include <unistd.h>
 
extern ssize_t __read(int fd, void *buf, size_t count);           
 
ssize_t read(int fd, void *buf, size_t count)                         
{                                                                     
    return __read(fd, buf, count);
}  

와 같이 작성하였습니다.

그리고 sourcedir/bionic/libc/Android.mk 파일을 수정하여
libc_common_src_files 에 mydir/read.c 라는 파일도 넣어
함께 컴파일 되게끔 작성 하였는데
막상 소스 루트 디렉토리에서 make 나 mmm ./bionic/ 과 같은 형식으로
컴파일을 하면
컴파일이 일부 되다가

target StaticExecutable: linker (out/target/product/generic/obj/EXECUTABLES/linker_intermediates/LINKED/linker)
out/target/product/generic/obj/EXECUTABLES/linker_intermediates/linker.o: In function `is_prelinked':
/home/taesaza0/src/android/mydroid/bionic/linker/linker.c:687: undefined reference to `read'
out/target/product/generic/obj/EXECUTABLES/linker_intermediates/linker.o: In function `load_library':
/home/taesaza0/src/android/mydroid/bionic/linker/linker.c:1115: undefined reference to `read'
out/target/product/generic/obj/EXECUTABLES/linker_intermediates/debugger.o: In function `debugger_signal_handler':
/home/taesaza0/src/android/mydroid/bionic/linker/debugger.c:73: undefined reference to `read'
out/target/product/generic/obj/STATIC_LIBRARIES/libc_nomalloc_intermediates/libc_nomalloc.a(ssp.o): In function `__guard_setup':
/home/taesaza0/src/android/mydroid/bionic/libc/bionic/ssp.c:48: undefined reference to `read'

이와 같이 undefined reference 라며 오류가 발생 합니다
혹시 왜 undefined reference 오류가 발생하시는지 아시는분 계신가요???
하루종일 삽질을 했는데 해결 법을 모르겠습니다
아시는분 답변 부탁드립니다.
감사합니다

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.