[lldb-dev] LLDB buildbot state

Deepak Panickal deepak at codeplay.com
Wed Feb 5 03:02:45 PST 2014


We had run into the same issue with editline.
You can try using this patch to fix the issue with the editline versions.

Thanks,
Deepak

On 05/02/14 05:47, Todd Fiala wrote:
> I just had a look at this build bot:
>
> lldb-x86_64-linux
>
> The latest build I looked at here 
> <http://lab.llvm.org:8011/builders/lldb-x86_64-linux/builds/10087> 
> appears to be failing because it doesn't have libedit installed.  As 
> we mentioned above, it will need a newer libedit since we are 
> currently using features that don't appear to be in older versions of 
> the library and we're not doing anything to distinguish that at the 
> moment.
>
>
> On Tue, Feb 4, 2014 at 4:50 PM, Todd Fiala <tfiala at google.com 
> <mailto:tfiala at google.com>> wrote:
>
>     > configure ../llvm --enable-cxx11
>     --with-extra-option=-I$LIBEDIT_PATH/include
>     --with-extra-ld-options=-L$
>
>     That should be:
>
>     ../llvm/configure  --enable-cxx11
>     --with-extra-option=-I$LIBEDIT_PATH/include
>     --with-extra-ld-options=-L$LIBEDIT_PATH/lib
>     --prefix=<some_install_path>
>
>
>     On Tue, Feb 4, 2014 at 4:49 PM, Todd Fiala <tfiala at google.com
>     <mailto:tfiala at google.com>> wrote:
>
>         We've been using a configure-built libedit from here
>         <http://thrysoee.dk/editline/>.  We essentially build that
>         with something like "configure
>         --prefix=/usr/local/libedit/libedit-20130712-3.1
>         <tel:20130712-3.1> && make && sudo make install".
>
>         We then run configure something like this:
>
>         export LIBEDIT_PATH=/usr/local/libedit/libedit-20130712-3.1
>         <tel:20130712-3.1>
>         export
>         LD_LIBRARY_PATH=<some_paths_to_gcc_4.8.2/lib64>:$LIBEDIT_PATH/lib:$LD_LIBRARY_PATH
>
>         # assume ../llvm is the source tree: i.e. we're in a build
>         directory that parallels the source tree
>         configure ../llvm --enable-cxx11
>         --with-extra-option=-I$LIBEDIT_PATH/include
>         --with-extra-ld-options=-L$LIBEDIT_PATH/lib
>         --prefix=<some_install_path>
>
>         That's what we're doing now.  We could consider breaking out
>         the libedit parts to the 2008-libedit spec and adding
>         configure/cmake checks for it.  That might be a nice smallish
>         project for somebody to knock out.
>
>
>
>         On Tue, Feb 4, 2014 at 4:21 PM, Adam Strzelecki <ono at java.pl
>         <mailto:ono at java.pl>> wrote:
>
>             > I've not been looking at the linux one.  However, I am
>             in the process of fixing something in llvm that is broken
>             due to unexpected interactions between libedit, libbsd and
>             <bsd/stdlib.h> on Ubuntu (and probably other linux
>             variants that might implement libedit in terms of libbsd).
>
>             The problem here is that any Ubuntu < 13.10 (which
>             unfortunately includes 12.04 LTS we are using) use libedit
>             2.11-20080614 while latest lldb
>             source/Host/common/Editline.cpp relies on libedit 3.1 API
>             (available only for 13.10).
>
>             I presume that Ubuntu < 13.10 builds should use their own
>             libedit 3.1 probably linked statically, but I have
>             absolutely no idea how to configure that.
>
>             Currently my build here fails:
>
>             /home/ono/Projects/llvm/tools/lldb/source/Host/common/Editline.cpp:70:27:
>             error: use of undeclared identifier 'EL_PROMPT_ESC'
>                 ::el_set (m_editline, EL_PROMPT_ESC,
>             GetPromptCallback, k_prompt_escape_char);
>                                       ^
>             /home/ono/Projects/llvm/tools/lldb/source/Host/common/Editline.cpp:265:31:
>             error: cannot initialize a parameter of type 'char *' with
>             an rvalue of type 'const char *'
>                     ::el_push(m_editline, std::string (bytes,
>             len).c_str());
>             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>             /usr/include/histedit.h:95:34: note: passing argument to
>             parameter here
>             void             el_push(EditLine *, char *);
>                ^
>             /home/ono/Projects/llvm/tools/lldb/source/Host/common/Editline.cpp:341:52:
>             error: cannot initialize a parameter of type 'char *' with
>             an rvalue of type 'const char *'
>                                         ::el_push (m_editline,
>             lines[line_idx+1].c_str());
>                        ^~~~~~~~~~~~~~~~~~~~~~~~~
>             /usr/include/histedit.h:95:34: note: passing argument to
>             parameter here
>             void             el_push(EditLine *, char *);
>                ^
>             /home/ono/Projects/llvm/tools/lldb/source/Host/common/Editline.cpp:357:52:
>             error: cannot initialize a parameter of type 'char *' with
>             an rvalue of type 'const char *'
>                                         ::el_push (m_editline,
>             lines[line_idx-1].c_str());
>                        ^~~~~~~~~~~~~~~~~~~~~~~~~
>             /usr/include/histedit.h:95:34: note: passing argument to
>             parameter here
>             void             el_push(EditLine *, char *);
>                ^
>             /home/ono/Projects/llvm/tools/lldb/source/Host/common/Editline.cpp:367:48:
>             error: cannot initialize a parameter of type 'char *' with
>             an rvalue of type 'const char *'
>                                     ::el_push (m_editline,
>             lines[line_idx+1].c_str());
>                    ^~~~~~~~~~~~~~~~~~~~~~~~~
>             /usr/include/histedit.h:95:34: note: passing argument to
>             parameter here
>             void             el_push(EditLine *, char *);
>                ^
>             5 errors generated.
>
>             Cheers,
>             --
>             Adam
>
>
>
>
>         -- 
>         Todd Fiala | 	 Software Engineer | 	tfiala at google.com
>         <mailto:tfiala at google.com> | 	650-943-3180
>
>
>
>
>
>     -- 
>     Todd Fiala | 	 Software Engineer | 	tfiala at google.com
>     <mailto:tfiala at google.com> | 	650-943-3180
>
>
>
>
>
> -- 
> Todd Fiala | 	 Software Engineer | 	tfiala at google.com 
> <mailto:tfiala at google.com> | 	650-943-3180
>
>
>
>
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20140205/4b931328/attachment.html>
-------------- next part --------------
diff --git include/lldb/Host/Editline.h include/lldb/Host/Editline.h
index b92de10..ab7e561 100644
--- include/lldb/Host/Editline.h
+++ include/lldb/Host/Editline.h
@@ -20,6 +20,11 @@
 #include <histedit.h>
 #endif
 
+// Fix for missing Editline ver 1.5
+#ifndef EL_PROMPT_ESC
+#define EL_PROMPT_ESC 21
+#endif
+
 #include <string>
 #include <vector>
 
diff --git source/Host/common/Editline.cpp source/Host/common/Editline.cpp
index 7e6a2f5..c7c169e 100644
--- source/Host/common/Editline.cpp
+++ source/Host/common/Editline.cpp
@@ -262,7 +262,7 @@ Editline::Push (const char *bytes, size_t len)
     {
         // Must NULL terminate the string for el_push() so we stick it
         // into a std::string first
-        ::el_push(m_editline, std::string (bytes, len).c_str());
+        ::el_push(m_editline, (char*)std::string (bytes, len).c_str());
         return len;
     }
     return 0;
@@ -338,7 +338,10 @@ Editline::GetLines(const std::string &end_line, StringList &lines)
                         // we were editing previous lines, then populate the line
                         // with the appropriate contents
                         if (line_idx+1 < lines.GetSize() && !lines[line_idx+1].empty())
-                            ::el_push (m_editline, lines[line_idx+1].c_str());
+                        {
+                            std::string &str = lines[line_idx+1];
+                            Push(str.c_str(), str.length());
+                        }
                     }
                     else if (line_status == LineStatus::Error)
                     {
@@ -354,7 +357,10 @@ Editline::GetLines(const std::string &end_line, StringList &lines)
                         //::fprintf (out_file, "\033[1A\033[%uD\033[2K", (uint32_t)(m_lines_prompt.size() + lines[line_idx].size())); // Make cursor go up a line and clear that line
                         ::fprintf (out_file, "\033[1A\033[1000D\033[2K");
                         if (!lines[line_idx-1].empty())
-                            ::el_push (m_editline, lines[line_idx-1].c_str());
+                        {
+                            std::string &str = lines[line_idx-1];
+                            Push(str.c_str(), str.length());
+                        }
                         --m_lines_curr_line;
                     }
                     break;
@@ -364,7 +370,10 @@ Editline::GetLines(const std::string &end_line, StringList &lines)
                     //::fprintf (out_file, "\033[1B\033[%uD\033[2K", (uint32_t)(m_lines_prompt.size() + lines[line_idx].size()));
                     ::fprintf (out_file, "\033[1B\033[1000D\033[2K");
                     if (line_idx+1 < lines.GetSize() && !lines[line_idx+1].empty())
-                        ::el_push (m_editline, lines[line_idx+1].c_str());
+                    {
+                        std::string &str = lines[line_idx+1];
+                        Push(str.c_str(), str.length());
+                    }
                     break;
             }
         }


More information about the lldb-dev mailing list