diff --git a/libdw/Android.mk b/libdw/Android.mk
deleted file mode 100755
index 6bb7122..0000000
--- a/libdw/Android.mk
+++ /dev/null
@@ -1,200 +0,0 @@
-# Copyright (C) 2013 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)
-
-LIBDW_SRC_FILES := \
-    cfi.c \
-    cie.c \
-    dwarf_abbrevhaschildren.c \
-    dwarf_abbrev_hash.c \
-    dwarf_addrdie.c \
-    dwarf_aggregate_size.c \
-    dwarf_arrayorder.c \
-    dwarf_attr.c \
-    dwarf_attr_integrate.c \
-    dwarf_begin.c \
-    dwarf_begin_elf.c \
-    dwarf_bitoffset.c \
-    dwarf_bitsize.c \
-    dwarf_bytesize.c \
-    dwarf_cfi_addrframe.c \
-    dwarf_cfi_end.c \
-    dwarf_child.c \
-    dwarf_cu_die.c \
-    dwarf_cu_getdwarf.c \
-    dwarf_cuoffset.c \
-    dwarf_decl_column.c \
-    dwarf_decl_file.c \
-    dwarf_decl_line.c \
-    dwarf_diecu.c \
-    dwarf_diename.c \
-    dwarf_dieoffset.c \
-    dwarf_end.c \
-    dwarf_entry_breakpoints.c \
-    dwarf_entrypc.c \
-    dwarf_error.c \
-    dwarf_filesrc.c \
-    dwarf_formaddr.c \
-    dwarf_formblock.c \
-    dwarf_formflag.c \
-    dwarf_formref.c \
-    dwarf_formref_die.c \
-    dwarf_formsdata.c \
-    dwarf_formstring.c \
-    dwarf_formudata.c \
-    dwarf_frame_cfa.c \
-    dwarf_frame_info.c \
-    dwarf_frame_register.c \
-    dwarf_func_inline.c \
-    dwarf_getabbrevattr.c \
-    dwarf_getabbrev.c \
-    dwarf_getabbrevcode.c \
-    dwarf_getabbrevtag.c \
-    dwarf_getalt.c \
-    dwarf_getarange_addr.c \
-    dwarf_getarangeinfo.c \
-    dwarf_getaranges.c \
-    dwarf_getattrcnt.c \
-    dwarf_getattrs.c \
-    dwarf_getcfi.c \
-    dwarf_getcfi_elf.c \
-    dwarf_getelf.c \
-    dwarf_getfuncs.c \
-    dwarf_getlocation_attr.c \
-    dwarf_getlocation.c \
-    dwarf_getlocation_die.c \
-    dwarf_getlocation_implicit_pointer.c \
-    dwarf_getmacros.c \
-    dwarf_getpubnames.c \
-    dwarf_getscopes.c \
-    dwarf_getscopes_die.c \
-    dwarf_getscopevar.c \
-    dwarf_getsrc_die.c \
-    dwarf_getsrcdirs.c \
-    dwarf_getsrc_file.c \
-    dwarf_getsrcfiles.c \
-    dwarf_getsrclines.c \
-    dwarf_getstring.c \
-    dwarf_hasattr.c \
-    dwarf_hasattr_integrate.c \
-    dwarf_haschildren.c \
-    dwarf_hasform.c \
-    dwarf_haspc.c \
-    dwarf_highpc.c \
-    dwarf_lineaddr.c \
-    dwarf_linebeginstatement.c \
-    dwarf_lineblock.c \
-    dwarf_linecol.c \
-    dwarf_linediscriminator.c \
-    dwarf_lineendsequence.c \
-    dwarf_lineepiloguebegin.c \
-    dwarf_lineisa.c \
-    dwarf_lineno.c \
-    dwarf_lineop_index.c \
-    dwarf_lineprologueend.c \
-    dwarf_linesrc.c \
-    dwarf_lowpc.c \
-    dwarf_macro_getparamcnt.c \
-    dwarf_macro_getsrcfiles.c \
-    dwarf_macro_opcode.c \
-    dwarf_macro_param1.c \
-    dwarf_macro_param2.c \
-    dwarf_macro_param.c \
-    dwarf_next_cfi.c \
-    dwarf_nextcu.c \
-    dwarf_offabbrev.c \
-    dwarf_offdie.c \
-    dwarf_onearange.c \
-    dwarf_onesrcline.c \
-    dwarf_peel_type.c \
-    dwarf_ranges.c \
-    dwarf_setalt.c \
-    dwarf_siblingof.c \
-    dwarf_sig8_hash.c \
-    dwarf_srclang.c \
-    dwarf_tag.c \
-    dwarf_whatattr.c \
-    dwarf_whatform.c \
-    fde.c \
-    frame-cache.c \
-    libdw_alloc.c \
-    libdw_findcu.c \
-    libdw_form.c \
-    libdw_visit_scopes.c \
-
-
-ifeq ($(HOST_OS),linux)
-
-#
-# host libdw
-#
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(LIBDW_SRC_FILES)
-
-LOCAL_C_INCLUDES := \
-	$(LOCAL_PATH)/.. \
-	$(LOCAL_PATH)/../lib \
-	$(LOCAL_PATH)/../libdw \
-	$(LOCAL_PATH)/../libelf
-
-LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -D_GNU_SOURCE -D_BSD_SOURCE -DIS_LIBDW
-
-# to suppress the "pointer of type ‘void *’ used in arithmetic" warning
-LOCAL_CFLAGS += -Wno-pointer-arith
-
-LOCAL_MODULE:= libdw
-
-LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
-
-LOCAL_STATIC_LIBRARIES := libz
-
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-endif # linux
-
-#
-# target libdw
-#
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(LIBDW_SRC_FILES)
-
-LOCAL_C_INCLUDES := \
-	$(LOCAL_PATH)/.. \
-	$(LOCAL_PATH)/../lib \
-	$(LOCAL_PATH)/../libdw \
-	$(LOCAL_PATH)/../libelf
-
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/../bionic-fixup
-
-LOCAL_CFLAGS += -include $(LOCAL_PATH)/../bionic-fixup/AndroidFixup.h
-
-LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -D_GNU_SOURCE -D_BSD_SOURCE -DIS_LIBDW -Werror
-
-# to suppress the "pointer of type ‘void *’ used in arithmetic" warning
-LOCAL_CFLAGS += -Wno-pointer-arith
-
-LOCAL_MODULE_TAGS := eng
-
-LOCAL_MODULE:= libdw
-
-LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
-
-LOCAL_STATIC_LIBRARIES := libz
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/libdwelf/Android.mk b/libdwelf/Android.mk
deleted file mode 100755
index 26b7d82..0000000
--- a/libdwelf/Android.mk
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright (C) 2015 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)
-
-LIBDWELF_SRC_FILES := \
-    dwelf_dwarf_gnu_debugaltlink.c \
-    dwelf_elf_gnu_build_id.c \
-    dwelf_elf_gnu_debuglink.c \
-
-
-ifeq ($(HOST_OS),linux)
-
-#
-# host libdwelf
-#
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(LIBDWELF_SRC_FILES)
-
-LOCAL_C_INCLUDES := \
-	$(LOCAL_PATH)/.. \
-	$(LOCAL_PATH)/../lib \
-	$(LOCAL_PATH)/../libdw \
-	$(LOCAL_PATH)/../libdwfl \
-	$(LOCAL_PATH)/../libebl \
-	$(LOCAL_PATH)/../libelf
-
-LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -D_GNU_SOURCE -D_BSD_SOURCE
-
-# to suppress the "pointer of type ‘void *’ used in arithmetic" warning
-LOCAL_CFLAGS += -Wno-pointer-arith
-
-LOCAL_MODULE:= libdwelf
-
-LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
-
-LOCAL_STATIC_LIBRARIES := libz
-
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-endif # linux
-
-#
-# target libdwelf
-#
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(LIBDWELF_SRC_FILES)
-
-LOCAL_C_INCLUDES := \
-	$(LOCAL_PATH)/.. \
-	$(LOCAL_PATH)/../lib \
-	$(LOCAL_PATH)/../libdw \
-	$(LOCAL_PATH)/../libdwfl \
-	$(LOCAL_PATH)/../libebl \
-	$(LOCAL_PATH)/../libelf
-
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/../bionic-fixup
-
-LOCAL_CFLAGS += -include $(LOCAL_PATH)/../bionic-fixup/AndroidFixup.h
-
-LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -D_GNU_SOURCE -D_BSD_SOURCE -Werror
-
-# to suppress the "pointer of type ‘void *’ used in arithmetic" warning
-LOCAL_CFLAGS += -Wno-pointer-arith
-
-LOCAL_MODULE_TAGS := eng
-
-LOCAL_MODULE:= libdwelf
-
-LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
-
-LOCAL_STATIC_LIBRARIES := libz
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/libdwfl/Android.mk b/libdwfl/Android.mk
deleted file mode 100755
index eb668e2..0000000
--- a/libdwfl/Android.mk
+++ /dev/null
@@ -1,167 +0,0 @@
-# Copyright (C) 2013 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)
-
-LIBDWFL_SRC_FILES := \
-    core-file.c \
-    cu.c \
-    derelocate.c \
-    dwfl_addrdie.c \
-    dwfl_addrdwarf.c \
-    dwfl_addrmodule.c \
-    dwfl_begin.c \
-    dwfl_build_id_find_debuginfo.c \
-    dwfl_build_id_find_elf.c \
-    dwfl_cumodule.c \
-    dwfl_dwarf_line.c \
-    dwfl_end.c \
-    dwfl_error.c \
-    dwfl_frame.c \
-    dwfl_frame_pc.c \
-    dwfl_frame_regs.c \
-    dwfl_getdwarf.c \
-    dwfl_getmodules.c \
-    dwfl_getsrc.c \
-    dwfl_getsrclines.c \
-    dwfl_line_comp_dir.c \
-    dwfl_linecu.c \
-    dwfl_lineinfo.c \
-    dwfl_linemodule.c \
-    dwfl_module_addrdie.c \
-    dwfl_module_addrname.c \
-    dwfl_module_addrsym.c \
-    dwfl_module_build_id.c \
-    dwfl_module.c \
-    dwfl_module_dwarf_cfi.c \
-    dwfl_module_eh_cfi.c \
-    dwfl_module_getdwarf.c \
-    dwfl_module_getelf.c \
-    dwfl_module_getsrc.c \
-    dwfl_module_getsrc_file.c \
-    dwfl_module_getsym.c \
-    dwfl_module_info.c \
-    dwfl_module_nextcu.c \
-    dwfl_module_register_names.c \
-    dwfl_module_report_build_id.c \
-    dwfl_module_return_value_location.c \
-    dwfl_nextcu.c \
-    dwfl_onesrcline.c \
-    dwfl_report_elf.c \
-    dwfl_segment_report_module.c \
-    dwfl_validate_address.c \
-    dwfl_version.c \
-    elf-from-memory.c \
-    find-debuginfo.c \
-    frame_unwind.c \
-    gzip.c \
-    image-header.c \
-    libdwfl_crc32.c \
-    libdwfl_crc32_file.c \
-    lines.c \
-    link_map.c \
-    linux-core-attach.c \
-    linux-kernel-modules.c \
-    linux-pid-attach.c \
-    linux-proc-maps.c \
-    offline.c \
-    open.c \
-    relocate.c \
-    segment.c \
-
-
-ifeq ($(HOST_OS),linux)
-
-#
-# host libdwfl
-#
-
-include $(CLEAR_VARS)
-
-# Clang has no nested functions.
-LOCAL_CLANG := false
-
-LOCAL_SRC_FILES := $(LIBDWFL_SRC_FILES)
-
-LOCAL_C_INCLUDES := \
-	$(LOCAL_PATH)/.. \
-	$(LOCAL_PATH)/../lib \
-	$(LOCAL_PATH)/../libdwelf \
-	$(LOCAL_PATH)/../libdwfl \
-	$(LOCAL_PATH)/../libebl \
-	$(LOCAL_PATH)/../libdw \
-	$(LOCAL_PATH)/../libelf
-
-LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -D_GNU_SOURCE
-
-# to suppress the "pointer of type ‘void *’ used in arithmetic" warning
-LOCAL_CFLAGS += -Wno-pointer-arith
-
-# Asserts are not compiled, so some debug variables appear unused. Rather than
-# fix, we prefer to turn off the warning locally.
-LOCAL_CFLAGS += -Wno-unused-but-set-variable
-
-# Similar to the above. To stay in line with upstream, ignore the warning.
-LOCAL_CFLAGS += -Wno-unused-variable
-
-LOCAL_MODULE:= libdwfl
-
-LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
-
-LOCAL_STATIC_LIBRARIES := libz
-
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-endif # linux
-
-#
-# target libdwfl
-#
-
-include $(CLEAR_VARS)
-
-# Clang has no nested functions.
-LOCAL_CLANG := false
-
-LOCAL_SRC_FILES := $(LIBDWFL_SRC_FILES)
-
-LOCAL_C_INCLUDES := \
-	$(LOCAL_PATH)/.. \
-	$(LOCAL_PATH)/../lib \
-	$(LOCAL_PATH)/../libdwelf \
-	$(LOCAL_PATH)/../libdwfl \
-	$(LOCAL_PATH)/../libebl \
-	$(LOCAL_PATH)/../libdw \
-	$(LOCAL_PATH)/../libelf
-
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/../bionic-fixup
-
-LOCAL_CFLAGS += -include $(LOCAL_PATH)/../bionic-fixup/AndroidFixup.h
-
-LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -D_GNU_SOURCE -Werror
-
-# to suppress the "pointer of type ‘void *’ used in arithmetic" warning
-LOCAL_CFLAGS += -Wno-pointer-arith
-
-# See above.
-LOCAL_CFLAGS += -Wno-unused-but-set-variable
-LOCAL_CFLAGS += -Wno-unused-variable
-
-LOCAL_MODULE:= libdwfl
-
-LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
-
-LOCAL_STATIC_LIBRARIES := libz
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/libebl/Android.mk b/libebl/Android.mk
deleted file mode 100755
index 7c33428..0000000
--- a/libebl/Android.mk
+++ /dev/null
@@ -1,127 +0,0 @@
-# Copyright (C) 2013 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)
-
-LIBEBL_SRC_FILES := \
-eblabicfi.c \
-eblauxvinfo.c \
-eblbackendname.c \
-eblbsspltp.c \
-eblcheckobjattr.c \
-eblcheckreloctargettype.c \
-ebl_check_special_section.c \
-ebl_check_special_symbol.c \
-eblclosebackend.c \
-eblcopyrelocp.c \
-eblcorenote.c \
-eblcorenotetypename.c \
-ebldebugscnp.c \
-ebldwarftoregno.c \
-ebldynamictagcheck.c \
-ebldynamictagname.c \
-eblelfclass.c \
-eblelfdata.c \
-eblelfmachine.c \
-eblgotpcreloccheck.c \
-eblgstrtab.c \
-eblinitreg.c \
-eblmachineflagcheck.c \
-eblmachineflagname.c \
-eblmachinesectionflagcheck.c \
-eblnonerelocp.c \
-eblnormalizepc.c \
-eblobjecttypename.c \
-eblobjnote.c \
-eblobjnotetypename.c \
-eblopenbackend.c \
-eblosabiname.c \
-eblreginfo.c \
-eblrelativerelocp.c \
-eblrelocsimpletype.c \
-eblreloctypecheck.c \
-eblreloctypename.c \
-eblrelocvaliduse.c \
-eblresolvesym.c \
-eblretval.c \
-eblsectionname.c \
-eblsectionstripp.c \
-eblsectiontypename.c \
-eblsegmenttypename.c \
-eblshflagscombine.c \
-eblstother.c \
-eblstrtab.c \
-eblsymbolbindingname.c \
-eblsymboltypename.c \
-ebl_syscall_abi.c \
-eblsysvhashentrysize.c \
-eblunwind.c \
-eblwstrtab.c \
-
-
-ifeq ($(HOST_OS),linux)
-
-#
-# host libebl
-#
-#
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(LIBEBL_SRC_FILES)
-
-LOCAL_C_INCLUDES := \
-	$(LOCAL_PATH)/.. \
-	$(LOCAL_PATH)/../lib \
-	$(LOCAL_PATH)/../libebl \
-	$(LOCAL_PATH)/../libasm \
-	$(LOCAL_PATH)/../libelf \
-	$(LOCAL_PATH)/../libdw
-
-LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -D_GNU_SOURCE
-
-LOCAL_MODULE:= libebl
-
-LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
-
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-endif # linux
-
-#
-# target libebl
-#
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(LIBEBL_SRC_FILES)
-
-LOCAL_C_INCLUDES := \
-	$(LOCAL_PATH)/.. \
-	$(LOCAL_PATH)/../lib \
-	$(LOCAL_PATH)/../libebl \
-	$(LOCAL_PATH)/../libasm \
-	$(LOCAL_PATH)/../libelf \
-	$(LOCAL_PATH)/../libdw
-
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/../bionic-fixup
-
-LOCAL_CFLAGS += -include $(LOCAL_PATH)/../bionic-fixup/AndroidFixup.h
-
-LOCAL_CFLAGS += -DHAVE_CONFIG_H -std=gnu99 -D_GNU_SOURCE -Werror -Wno-error=pointer-arith
-
-LOCAL_MODULE:= libebl
-
-LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
-
-include $(BUILD_STATIC_LIBRARY)
