diff options
author | Mohamad Ayyash <mkayyash@google.com> | 2014-04-04 13:23:15 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2014-04-07 14:41:50 -0700 |
commit | 1031614c095f00454326deb460a83381e98d5166 (patch) | |
tree | 6d3f25f26ea88b254a0b3a1154f00a332188ba04 | |
parent | 6bacfc7b34be8414d01c201f1c6086e3edaa8b62 (diff) | |
download | ltrace-1031614c095f00454326deb460a83381e98d5166.tar.gz |
ltrace: Get it to build on Android (Android.mk and missing functions)
- Add Android.mk.
- Work around missing stpcpy() and rindex().
Change-Id: Iffdd707b22a84b1a1c6a802574ded05b289cee0a
-rw-r--r-- | Android.mk | 189 | ||||
-rw-r--r-- | config.h | 1 | ||||
-rw-r--r-- | sysdeps/linux-gnu/hooks.c | 5 |
3 files changed, 194 insertions, 1 deletions
diff --git a/Android.mk b/Android.mk new file mode 100644 index 0000000..021c026 --- /dev/null +++ b/Android.mk @@ -0,0 +1,189 @@ +# +# Copyright (C) 2014 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +LOCAL_PATH := $(call my-dir) + +# ------------------------------------------------------------------------- + +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + bits.c \ + breakpoints.c \ + debug.c \ + demangle.c \ + dict.c \ + execute_program.c \ + expr.c \ + fetch.c \ + filter.c \ + glob.c \ + handle_event.c \ + lens.c \ + lens_default.c \ + lens_enum.c \ + libltrace.c \ + library.c \ + ltrace-elf.c \ + main.c \ + memstream.c \ + options.c \ + output.c \ + param.c \ + printf.c \ + proc.c \ + prototype.c \ + read_config_file.c \ + summary.c \ + type.c \ + value.c \ + value_dict.c \ + vect.c \ + zero.c \ + sysdeps/linux-gnu/breakpoint.c \ + sysdeps/linux-gnu/events.c \ + sysdeps/linux-gnu/hooks.c \ + sysdeps/linux-gnu/proc.c \ + sysdeps/linux-gnu/trace.c \ + +LOCAL_C_INCLUDES := \ + $(LOCAL_PATH)/ \ + $(LOCAL_PATH)/sysdeps/ \ + $(LOCAL_PATH)/sysdeps/linux-gnu \ + external/elfutils \ + external/elfutils/0.153/libelf \ + external/libunwind/include \ + +arm_path := sysdeps/linux-gnu/arm +LOCAL_C_INCLUDES_arm := $(LOCAL_PATH)/$(arm_path) +LOCAL_SRC_FILES_arm := \ + $(arm_path)/breakpoint.c \ + $(arm_path)/fetch.c \ + $(arm_path)/plt.c \ + $(arm_path)/regs.c \ + $(arm_path)/trace.c \ + +arm64_path := sysdeps/linux-gnu/aarch64 +LOCAL_C_INCLUDES_arm64 := $(LOCAL_PATH)/$(arm64_path) +LOCAL_SRC_FILES_arm64 := \ + $(arm64_path)/fetch.c \ + $(arm64_path)/plt.c \ + $(arm64_path)/regs.c \ + $(arm64_path)/trace.c \ + +mips_path := sysdeps/linux-gnu/mips +LOCAL_C_INCLUDES_mips := $(LOCAL_PATH)/$(mips_path) +LOCAL_SRC_FILES_mips := \ + $(mips_path)/plt.c \ + $(mips_path)/regs.c \ + $(mips_path)/trace.c \ + +x86_path := sysdeps/linux-gnu/x86 +LOCAL_C_INCLUDES_x86 := $(LOCAL_PATH)/$(x86_path) +LOCAL_SRC_FILES_x86 := \ + $(x86_path)/fetch.c \ + $(x86_path)/plt.c \ + $(x86_path)/regs.c \ + $(x86_path)/trace.c \ + +LOCAL_CFLAGS := -D_GNU_SOURCE=1 -D_POSIX_SOURCE=1 + +LOCAL_CFLAGS += \ + -DELF_HASH_TAKES_CHARP=1 \ + -DHAVE_ALARM=1 \ + -DHAVE_ATEXIT=1 \ + -DHAVE_DLFCN_H=1 \ + -DHAVE_ELF_C_READ_MMAP=1 \ + -DHAVE_ELF_H=1 \ + -DHAVE_FCNTL_H=1 \ + -DHAVE_FORK=1 \ + -DHAVE_GELF_H=1 \ + -DHAVE_GETOPT_LONG=1 \ + -DHAVE_GETTIMEOFDAY=1 \ + -DHAVE_INTTYPES_H=1 \ + -DHAVE_LIBELF=1 \ + -DHAVE_LIBSELINUX=1 \ + -DHAVE_LIBSTDC__=1 \ + -DHAVE_LIBUNWIND=1 \ + -DHAVE_LIBUNWIND_PTRACE=1 \ + -DHAVE_LIMITS_H=1 \ + -DHAVE_MEMORY_H=1 \ + -DHAVE_MEMSET=1 \ + -DHAVE_OPEN_MEMSTREAM=1 \ + -DHAVE_SELINUX_SELINUX_H=1 \ + -DHAVE_STDDEF_H=1 \ + -DHAVE_STDINT_H=1 \ + -DHAVE_STDLIB_H=1 \ + -DHAVE_STRCHR=1 \ + -DHAVE_STRDUP=1 \ + -DHAVE_STRERROR=1 \ + -DHAVE_STRINGS_H=1 \ + -DHAVE_STRING_H=1 \ + -DHAVE_STRSIGNAL=1 \ + -DHAVE_STRTOL=1 \ + -DHAVE_STRTOUL=1 \ + -DHAVE_SYS_IOCTL_H=1 \ + -DHAVE_SYS_PARAM_H=1 \ + -DHAVE_SYS_STAT_H=1 \ + -DHAVE_SYS_TIME_H=1 \ + -DHAVE_SYS_TYPES_H=1 \ + -DHAVE_UNISTD_H=1 \ + -DHAVE_UNWINDER=1 \ + -DHAVE_VFORK=1 \ + -DHAVE_WORKING_FORK=1 \ + -DHAVE_WORKING_VFORK=1 \ + -DLT_OBJDIR='".libs"' \ + -DPACKAGE='"ltrace"' \ + -DPACKAGE_BUGREPORT='"ltrace-devel@lists.alioth.debian.org"' \ + -DPACKAGE_NAME='"ltrace"' \ + -DPACKAGE_STRING='"ltrace 0.7.91"' \ + -DPACKAGE_TARNAME='"ltrace"' \ + -DPACKAGE_URL='"http://ltrace.alioth.debian.org/"' \ + -DPACKAGE_VERSION='"0.7.91"' \ + -DVERSION='"0.7.91"' \ + -D_FILE_OFFSET_BITS=64 \ + -D_LARGE_FILES=1 \ + -DPKGDATADIR=NULL \ + -DSYSCONFDIR='"/etc/"' \ + -Drindex=strrchr \ + +LOCAL_CFLAGS_32 += -DSIZEOF_LONG=4 +LOCAL_CFLAGS_64 += -DSIZEOF_LONG=8 + +LOCAL_CFLAGS += \ + -Wall \ + -Wno-missing-field-initializers \ + -Wno-unused-parameter \ + -Wno-sign-compare \ + +LOCAL_STATIC_LIBRARIES := libelf + +LOCAL_SHARED_LIBRARIES := \ + libcutils \ + libgccdemangle \ + libselinux \ + libunwind \ + libunwind-ptrace \ + +LOCAL_MODULE := ltrace + +LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES) + +LOCAL_MODULE_TAGS := debug + +LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk + +include $(BUILD_EXECUTABLE) diff --git a/config.h b/config.h new file mode 100644 index 0000000..ed6da18 --- /dev/null +++ b/config.h @@ -0,0 +1 @@ +/* Integrated in Android.mk. Do NOT delete as it is still referenced. */ diff --git a/sysdeps/linux-gnu/hooks.c b/sysdeps/linux-gnu/hooks.c index 3fb3614..e3bb8c1 100644 --- a/sysdeps/linux-gnu/hooks.c +++ b/sysdeps/linux-gnu/hooks.c @@ -40,7 +40,10 @@ append(const char *str1, const char *str2) char *ret = malloc(strlen(str1) + strlen(str2) + 2); if (ret == NULL) return ret; - strcpy(stpcpy(ret, str1), str2); + /* BEGIN android-changed */ + strcpy(ret, str1); + strcat(ret, str2); + /* END android-changed */ return ret; } |