diff --git a/libdl/Android.mk b/libdl/Android.mk
new file mode 100644
index 0000000..150f704
--- /dev/null
+++ b/libdl/Android.mk
@@ -0,0 +1,58 @@
+LOCAL_PATH:= $(call my-dir)
+
+#
+# libdl
+#
+
+include $(CLEAR_VARS)
+
+# NOTE: --exclude-libs=libgcc.a makes sure that any symbols libdl.so pulls from 
+# libgcc.a are made static to libdl.so.  This in turn ensures that libraries that
+# a) pull symbols from libgcc.a and b) depend on libdl.so will not rely on libdl.so
+# to provide those symbols, but will instead pull them from libgcc.a.  Specifically,
+# we use this property to make sure libc.so has its own copy of the code from 
+# libgcc.a it uses.
+#
+# DO NOT REMOVE --exclude-libs!
+
+LOCAL_LDFLAGS := -Wl,--exclude-libs=libgcc.a
+
+# for x86, exclude libgcc_eh.a for the same reasons as above
+ifneq ($(TARGET_SIMULATOR),true)
+ifeq ($(TARGET_ARCH),x86)
+LOCAL_LDFLAGS += -Wl,--exclude-libs=libgcc_eh.a
+endif
+endif
+
+LOCAL_SRC_FILES:= libdl.c
+
+LOCAL_MODULE:= libdl
+
+# NOTE: libdl needs __aeabi_unwind_cpp_pr0 from libgcc.a but libgcc.a needs a
+# few symbols from libc. Using --no-undefined here results in having to link
+# against libc creating a circular dependency which is removed and we end up
+# with missing symbols. Since this library is just a bunch of stubs, we set
+# LOCAL_ALLOW_UNDEFINED_SYMBOLS to remove --no-undefined from the linker flags.
+LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
+LOCAL_SYSTEM_SHARED_LIBRARIES := 
+
+include $(BUILD_SHARED_LIBRARY)
+
+BUILD_DLTEST:=0
+ifeq ($(BUILD_DLTEST),1)
+
+#
+# dltest
+#
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES:= dltest.c
+
+LOCAL_MODULE:= dltest 
+
+LOCAL_SHARED_LIBRARIES := libdl
+
+include $(BUILD_EXECUTABLE)
+
+endif
diff --git a/libdl/MODULE_LICENSE_BSD b/libdl/MODULE_LICENSE_BSD
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/libdl/MODULE_LICENSE_BSD
diff --git a/libdl/NOTICE b/libdl/NOTICE
new file mode 100644
index 0000000..3831b34
--- /dev/null
+++ b/libdl/NOTICE
@@ -0,0 +1,26 @@
+Copyright (C) 2007 The Android Open Source Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the project nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/libdl/dltest.c b/libdl/dltest.c
new file mode 100755
index 0000000..14cd854
--- /dev/null
+++ b/libdl/dltest.c
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <getopt.h>
+#include <string.h>
+#include <dlfcn.h>
+
+extern char *optarg;
+extern int optind, opterr, optopt;
+
+static struct option long_options[] = {
+    {"library", required_argument, 0, 'l'},
+    {"symbol",  required_argument, 0, 's'},
+    {"help",    no_argument,       0, 'h'},
+    {0, 0, 0, 0},
+};
+
+/* This array must parallel long_options[] */
+static const char *descriptions[] = {
+    "specify a library path to look up symbol",
+    "specify symbol to look up",
+    "print this help screen",
+};
+
+void print_help(const char *name) {
+    fprintf(stdout, 
+            "invokation:\n"
+            "\t%s [-l <libname>] -s <symbol name>\n"
+            "\t%s -h\n\n", name, name);
+    fprintf(stdout, "options:\n");
+    struct option *opt = long_options;
+    const char **desc = descriptions;
+    while (opt->name) {
+        fprintf(stdout, "\t-%c/--%s%s: %s\n",
+                opt->val,
+                opt->name,
+                (opt->has_arg ? " (argument)" : ""),
+                *desc);
+        opt++;
+        desc++;
+    }
+}
+
+int get_options(int argc, char **argv, char **lib, char **sym) 
+{
+    int c;
+
+    *lib = 0;
+    *sym = 0;
+
+    while (1) {
+        /* getopt_long stores the option index here. */
+        int option_index = 0;
+
+        c = getopt_long (argc, argv, 
+                         "l:s:h",
+                         long_options, 
+                         &option_index);
+        /* Detect the end of the options. */
+        if (c == -1) break;
+
+        switch (c) {
+		case 'l':
+            *lib = strdup(optarg);
+			break;
+        case 's': 
+            *sym = strdup(optarg);
+            break;
+        case 'h': print_help(argv[0]); exit(EXIT_FAILURE); break;
+        case '?':
+            /* getopt_long already printed an error message. */
+            break;
+        default:
+            fprintf(stderr, "Unknown option");
+            exit(EXIT_FAILURE);
+        }
+    }
+
+    return optind;
+}
+
+int main(int argc, char **argv)
+{
+    char *libname, *symname, *prog = *argv;
+
+    get_options(argc, argv, &libname, &symname);
+
+    if (symname == NULL) {
+        fprintf(stderr, "You must specify a symbol!\n");
+        print_help(prog);
+        exit(EXIT_FAILURE);
+    }
+
+    {
+        const char *dlerr;
+        void *handle, *symbol;
+
+        printf("opening library [%s]\n", libname);
+        dlerr = dlerror();
+        handle = libname ? dlopen(libname, RTLD_NOW) : RTLD_DEFAULT;
+        dlerr = dlerror();
+        if (dlerr != NULL) fprintf(stderr, "dlopen() error: %s\n", dlerr);
+
+        printf("opening symbol [%s]\n", symname);
+        symbol = dlsym(handle, symname);
+        dlerr = dlerror();
+        if (dlerr != NULL) fprintf(stderr, "dlsym() error: %s\n", dlerr);
+
+        printf("closing library [%s]\n", libname);
+        dlclose(handle);
+        dlerr = dlerror();
+        if (dlerr != NULL) fprintf(stderr, "dlclose() error: %s\n", dlerr);
+        else printf("successfully opened symbol\n");
+    }
+
+    if (libname != NULL) free(libname);
+    if (symname != NULL) free(symname);
+    return 0;
+}
diff --git a/libdl/libdl.c b/libdl/libdl.c
new file mode 100644
index 0000000..52707f1
--- /dev/null
+++ b/libdl/libdl.c
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2007 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.
+ */
+
+/* These are stubs for functions that are actually defined
+ * in the dynamic linker (dlfcn.c), and hijacked at runtime.
+ */
+void *dlopen(const char *filename, int flag) { return 0; }
+char *dlerror(void) { return 0; }
+void *dlsym(void *handle, const char *symbol) { return 0; }
+int dlclose(void *handle) { return 0; }
+
+#ifdef __arm__
+void *dl_unwind_find_exidx(void *pc, int *pcount) { return 0; }
+#elif defined(__i386__)
+/* we munge the cb definition so we don't have to include any headers here.
+ * It won't affect anything since these are just symbols anyway */
+int dl_iterate_phdr(int (*cb)(void *info, void *size, void *data),
+                    void *data) { return 0; }
+#else
+#error Unsupported architecture. Only arm and x86 are supported.
+#endif
